我想找到一種方法來正確使用xpath來選擇某些元素,並且我的解決方案部分工作,而且我不知道如何修理它。如何使用PHP中包含某個子節點的XPath獲取所有XML節點
這裏是一個示例XML:
<Database>
<Items>
<Item>
<Name>A</Name>
<Locations>
<Location>A</Location>
<Location>B</Location>
<Location>C</Location>
</Locations>
</Item>
<Item>
<Name>B</Name>
<Locations>
<Location>E</Location>
</Locations>
</Item>
<Item>
<Name>C</Name>
<Locations>
<Location>D</Location>
<Location>E</Location>
</Locations>
</Item>
</Items>
</Database>
而且我使用這個PHP代碼,以獲得含有一個位置 「E」
$LocationFilter = "E" //hard written, it's actually a GET param
$filter = $xml->xpath("//Items/Item[contains(Locations/Location,'".$LocationFilter."')]");
foreach ($filter as $Item) {
echo($filter->Name);
}
而不是讓BC和所有項目(名稱),我只得到B,換句話說,我只得到那些第一個位置是E的物品,而不是所有在任何位置包含E的物品。
我不確定爲什麼這不起作用,但我希望我已經解釋得很好。