php – 从xpath查询中排除节点 – 编程之家

  • A+
所属分类:PHP

编程之家收集整理的这篇文章主要介绍了php – 从xpath查询中排除节点编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这是我目前使用的一些代码.我需要帮助的地方是$bn_name_search和$bn_ID_search

  1. $xpath_base='/ItemSearchResponse/Items/Item[';
  2. for ($i = 1; $i<=10; $i++)
  3. {
  4. $curr_item_base=$xpath_base.$i.']';
  5. $bn_name_search=$curr_item_base.'/browseNodes//browseNode/name/text()';
  6. $bn_ID_search=$curr_item_base.'/browseNodes//browseNode/browseNodeID/text()';
  7. $bn_names=$parsed->xpath($bn_name_search);
  8. $bn_IDs=$parsed->xpath($bn_ID_search);
  9. }

这给了我所有的browsnode名称和所有broswnode ID.我现在要做的是只查找不是“所有产品”的browsenode名称browseNode / name /”,只有browsnode IDbrowseNode / browseNodeID /”共享一个名称不是“browseNode /”的“browseNode /”所有产品“我不必测试browseNode / name的存在.如果有ID,则不会为空.如果我可以放两个否定表达式,那就更好了.我会省略名为“所有产品”的名称名称为“部门”的名称.

编辑
这是XML的一个块:如果它显示“& lt; name& gt; Departments& lt; / name& gt;”,我想排除该名称及其ID.如果我有一个类似的“& lt; name& gt;所有产品& lt; / name& gt;”我也想排除这个名字和它的ID. (按ID,我的意思是& lt; browseNodeID& gt;)

  1. <browseNodes>
  2. <browseNode>
  3. <browseNodeID>2346727011</browseNodeID>
  4. <name>Casual</name>
  5. <Ancestors>
  6. <browseNode>
  7. <browseNodeID>1045024</browseNodeID>
  8. <name>Dresses</name>
  9. <Ancestors>
  10. <browseNode>
  11. <browseNodeID>1040660</browseNodeID>
  12. <name>Women</name>
  13. <Ancestors>
  14. <browseNode>
  15. <browseNodeID>1036682</browseNodeID>
  16. <name>Departments</name>
  17. <IscategoryRoot>1</IscategoryRoot>
  18. <Ancestors>
  19. <browseNode>
  20. <browseNodeID>1036592</browseNodeID>
  21. <name>Clothing &amp; AccessorIEs</name>
  22. </browseNode>
  23. </Ancestors>
  24. </browseNode>
  25. </Ancestors>
  26. </browseNode>
  27. </Ancestors>
  28. </browseNode>
  29. </Ancestors>
  30. </browseNode>
  31. </browseNodes>

解决方法:

你去:

  1. $nodes = $parsed->xpath("//browseNode[name!='Departments' and name!='All Products']");
  2. foreach ($nodes as $node) {
  3. echo "ID: {$node->browseNodeID}, name: {$node->name}\n";
  4. }
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin