PHP SimpleXML 节点同级

PHP SimpleXML nodes same level

我有一个 xml 看起来像这样

<ArticleId keyId="3d5c0332:1533c106ef9:67eb" price="6495,00" primId="HP229141500">
<StockQuant storeId="72">1.0</StockQuant>
<StockQuant storeId="Utstilling">1.0</StockQuant>
<PosterName></PosterName>
<PosterDescription></PosterDescription>
<Dimension></Dimension>
<Assembled></Assembled>
<AssemblyPrice></AssemblyPrice>
</ArticleId>

我使用 simplexml_load_file() 从包含许多 ArticleId 元素的文件中加载它。

问题是我没有获得 StockQuant 的所有信息。如果我print_r xml,那么我得到数据; 1.0,但我没有得到属性; storeId="72"。如果我像亲爱的例子那样做,那么我只会得到 1 个 StockQuant 元素,而不是两个。

我像这样遍历元素:

foreach( $xml as $key => $value )
{
    foreach( $value->StockQuant as $key2 => $value2 )
    {
        $stocks = simplexml_import_dom($value2);
        print_r($stocks);
    }
}

*编辑以添加 foreach 循环。

试试下面的代码:

foreach( $xml as $key => $value )
{
    foreach( $value->StockQuant as $key2 => $value2 )
    {
         echo $value2['storeId']. "\n" ;         
    }
} 

你可以这样做:

$xml = simplexml_load_file('file.xml');

foreach($xml as $article )
{
    // there are multiple quantities
    foreach($article->StockQuant as $quantity)
    {
        echo $quantity[0]; 
        echo ' ';
        echo $quantity->attributes()->storeId;
        echo '<br/>';
    }
}

输出:

1.0 72
1.0 Utstilling
3.0 12
1.0 Utstilling
6.0 13
1.0 Utstilling

XML 看起来像这样:

<Articles>
    <ArticleId keyId="3d5c0332:1533c106ef9:67eb" price="6495,00" primId="HP229141500">
        <StockQuant storeId="72">1.0</StockQuant>
        <StockQuant storeId="Utstilling">1.0</StockQuant>
        <PosterName></PosterName>
        <PosterDescription></PosterDescription>
        <Dimension></Dimension>
        <Assembled></Assembled>
        <AssemblyPrice></AssemblyPrice>
    </ArticleId>
    <ArticleId keyId="3d5c0332:1533c106ef9:67eb" price="6495,00" primId="HP229141500">
        <StockQuant storeId="12">3.0</StockQuant>
        <StockQuant storeId="Utstilling">1.0</StockQuant>
        <PosterName></PosterName>
        <PosterDescription></PosterDescription>
        <Dimension></Dimension>
        <Assembled></Assembled>
        <AssemblyPrice></AssemblyPrice>
    </ArticleId>
    <ArticleId keyId="3d5c0332:1533c106ef9:67eb" price="6495,00" primId="HP229141500">
        <StockQuant storeId="13">6.0</StockQuant>
        <StockQuant storeId="Utstilling">1.0</StockQuant>
        <PosterName></PosterName>
        <PosterDescription></PosterDescription>
        <Dimension></Dimension>
        <Assembled></Assembled>
        <AssemblyPrice></AssemblyPrice>
    </ArticleId>

</Articles>