这应该是一件容易的事,但我没有使它起作用:在下面的代码片段中,我想选择一个<WebFilterCategory>
节点,该节点的<Name>
子节点的值为“ Categoryname2”:
<?php
$xmlstring = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<Request>
<Login>
<UserName>admin</UserName>
<Password>admin</Password>
</Login>
<Set Operation="get">
<WebFilterCategory transactionid="">
<Name>Categoryname1</Name>
<Classification>Objectionable</Classification>
<DomainList>
<Domain>example1.com</Domain>
<Domain>example2.com</Domain>
</DomainList>
</WebFilterCategory>
<WebFilterCategory transactionid="">
<Name>Categoryname2</Name>
<Classification>Objectionable</Classification>
<DomainList>
<Domain>example1.org</Domain>
<Domain>example2.org</Domain>
</DomainList>
</WebFilterCategory>
</Set>
</Request>
XML;
$xml = simplexml_load_string( $xmlstring ) or die("Error: Cannot create object");
foreach ($xml->query('//WebFilterCategory/Name[contains(., "Categoryname2")]') as $category) {
print_r($xmlstring);
}
?>
也许,也有一个更精简的查询来获得所需的结果。
您要查找的方法不是query
,而是xpath
然后您可以更新路径以匹配名称包含Categoryname2
的WebFilterCategory>
//WebFilterCategory[Name[contains(., "Categoryname2")]]'