我有一段 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。