【发布时间】:2017-05-25 22:11:48
【问题描述】:
我正在尝试找到一种方法来正确使用 xpath 来选择某些元素,我的解决方案部分有效,但我不知道如何修复它。
这是一个示例 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);
}
我只得到 B,而不是得到 BC(项目的名称),或者换句话说,我只得到那些第一个位置是 E 的项目,而不是所有在任何位置包含 E 的项目。
我不太确定为什么这不起作用,但我希望我已经解释得足够好。
【问题讨论】: