如果这个代码:PHP XPath语法
$s = 'BrowseNodes/BrowseNode';
$temp_bnid=$item->xpath($s);
echo '<pre>
Root Search:
';
print_r($temp_bnid);
echo '</pre>';
die('Halted for testing');
给出了这样的输出:
Root Search:
Array
(
[0] => SimpleXMLElement Object
(
[BrowseNodeId] => 2522032011
[Name] => Balls
[Ancestors] => SimpleXMLElement Object
(
[BrowseNode] => SimpleXMLElement Object
(
[BrowseNodeId] => 196601011
[Name] => Baby & Toddler Toys
[Ancestors] => SimpleXMLElement Object
(
[BrowseNode] => SimpleXMLElement Object
(
[BrowseNodeId] => 165795011
[Name] => Categories
[IsCategoryRoot] => 1
[Ancestors] => SimpleXMLElement Object
(
[BrowseNode] => SimpleXMLElement Object
(
[BrowseNodeId] => 165793011
[Name] => Toys & Games
)
)
)
)
)
)
)
)
Halted for testing
和验证码:
$s = 'BrowseNodes/BrowseNode[Name=Categories]';
// I also tried $s = 'BrowseNodes/BrowseNode[Name="Categories"]';
$temp_bnid=$item->xpath($s);
echo '<pre>
Root Search:
';
print_r($temp_bnid);
echo '</pre>';
die('Halted for testing');
给出了这样的输出:
Root Search:
Array
(
)
Halted for testing
我在做什么错误,当我试图让包含“Name”节点的“Name”节点值为“Categories”的BrowseNode节点? 这个问题的另一种解决方案是选择存在“IsCategoryRoot”节点的节点,但我真的想了解如何执行其他查询,因为它可能会在未来帮助我更多。 Niether的方式与我处理的查询有关。
发布你想搜索可能比SimpleXML的对象的转储更有帮助的XML。 – 2012-02-08 16:57:02
您能举一个XML输入样本吗?帮助你会更容易。但给我看到:也许名称是一个属性,如果是这样,你可以尝试:'BrowseNodes/BrowseNode [@ Name =“Categories”]'。 – 2012-02-08 17:00:57