我有一块XML的,其中相同的信息可以显示为不同节点的孩子。 如 :
<root>
<category id=1>
<product id="ABC123" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
<size name="2XL"/>
<size name="3XL"/>
</sizes>
</product>
</products>
</category>
<category id=2>
<products>
<product id="ABC123" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
<size name="2XL"/>
<size name="3XL"/>
</sizes>
</product>
<product id="PPP543" >
<sizes>
<size name="S"/>
<size name="M"/>
<size name="L"/>
<size name="XL"/>
</sizes>
</product>
</products>
</category>
我的目标是选择产品ID ABC123的大小,并将它们存储为一个数组。 当前的代码,我有是:
$arrTest=array();
foreach($xml->xpath('//root/category/products/product[@id= "'.$productCall.'" ]/sizes/size') as $size){
array_push($arrTest, $size["name"]);
}
$ productCall是我要找的ID。 在这种情况下,它是ABC123。
输出是S,M,L,XL,2XL,3XL,S,M,L,XL,2XL,3XL。 这意味着它是阅读中发现的两个条目。 我预计给出的foreach循环,但我似乎无法找到一种方法只得到第一个结果的输出。 我已尝试加入[0]和[1]:
$y=$xml->xpath('//root/category/products/product[@id= "'.$productCall.'" ][1]/sizes/size');
[0]没有返回和[1]返回我已经得到了相同的结果。
我希望这是我的思念的东西基本的东西或者只是过度思考,我真的没有使用XPath工作过一件简单的事情。