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>
我有一个 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>