【问题标题】:Recursively find all the nodes from an XML having a given argument with PHP / simpleXML使用 PHP / simpleXML 从具有给定参数的 XML 中递归查找所有节点
【发布时间】:2009-02-06 15:40:04
【问题描述】:

正如我在标题中所说,我想知道是否有可能以及如何递归解析 XML 文档并返回所有具有给定参数的节点。

我实际上要做的是加载和 XHTML 文档并返回所有节点(P 节点、DIV 节点等),其类等于先前定义的值。

【问题讨论】:

    标签: php xml simplexml


    【解决方案1】:

    使用 xpath 查找节点,然后循环:

    $xml = new SimpleXMLElement($string);
    $nodes = $xml->xpath("//*[@class='myclass']");
    
    foreach ($nodes as $node) {
        // ...
    }
    

    (没有实际测试过,但应该是对的。)

    【讨论】:

    • 此 XPath 表达式将匹配其类属性完全等于“myclass”的所有节点。换句话说,
      not 匹配。 XPath 需要使用contains() 加上空格分隔符进行修改,以避免子字符串匹配,例如“myclass2”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-08
    • 2013-05-02
    相关资源
    最近更新 更多