这是我目前使用的一些代码。当我需要帮助的$bn_name_search
和$bn_id_search
从xpath中排除节点查询
$xpath_base='/ItemSearchResponse/Items/Item[';
for ($i = 1; $i<=10; $i++)
{
$curr_item_base=$xpath_base.$i.']';
$bn_name_search=$curr_item_base.'/BrowseNodes//BrowseNode/Name/text()';
$bn_id_search=$curr_item_base.'/BrowseNodes//BrowseNode/BrowseNodeId/text()';
$bn_names=$parsed->xpath($bn_name_search);
$bn_ids=$parsed->xpath($bn_id_search);
}
这给了我所有的browsnode名称以及所有broswnode IDS。我现在想要做的只是找到不是“所有产品”的browsenode名称“BrowseNode/Name/
”,只有browsnode ID“BrowseNode/BrowseNodeId/
”共享一个名称不是“所有产品”的“BrowseNode/
”必须测试BrowseNode/Name
的存在。如果有ID,它不会是空白的。如果我可以把两个负面的表达,它会更好。我会忽略那些名字是“所有产品”,那些名字是“部门”
编辑: 这里的XML块:它说:“<Name>Departments</Name>
”,我想排除名称它是ID。如果我有一个类似“<Name>All Products</Name>
”的相似字样,我还想排除该名称,它是ID。 (由ID,我的意思是<BrowseNodeId>
)
<BrowseNodes>
<BrowseNode>
<BrowseNodeId>2346727011</BrowseNodeId>
<Name>Casual</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1045024</BrowseNodeId>
<Name>Dresses</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1040660</BrowseNodeId>
<Name>Women</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1036682</BrowseNodeId>
<Name>Departments</Name>
<IsCategoryRoot>1</IsCategoryRoot>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1036592</BrowseNodeId>
<Name>Clothing & Accessories</Name>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</BrowseNodes>
感谢您的答案。当我开始工作时,我会尝试其中的一个或两个。 – TecBrat 2012-04-23 02:17:18
仅供将来参考,如果您想快速回答,最好尽可能多地发布信息,并尽可能输入/输出。 – JWiley 2012-04-23 11:40:16
以下任意数量的答案都有效。我的测试代码中有一个错误,所以没有任何工作。最后,最简单的答案(在我眼中)是对我有用的。再次感谢所有提供答案的人! – TecBrat 2012-04-23 14:47:56