代码之家  ›  专栏  ›  技术社区  ›  mcgrailm

获取所有元素的xpath

  •  0
  • mcgrailm  · 技术社区  · 14 年前

    我使用simpleXML解析XML,我可以得到单个节点,但不是所有我想要的节点。

    例子

        $xmlObject = simplexml_load_file($xml_file); // load the xml file
            $cols = $xmlObject->RESULTSET->ROW->COL;
        foreach ( $cols as $COL) {
            echo $COL->DATA;
        }
    

    只给了我第一排的第一列,我试过了

        $xmlObject = simplexml_load_file($xml_file); // load the xml file
        $cols = $xmlObject->xpath('*//COL');
        foreach ( $cols as $COL) {
            echo $COL->DATA;
        }
    

    什么也没拿回来

    知道我做错了什么吗?

      <?xml version="1.0" encoding="UTF-8"?>
      <FMPXMLRESULT xmlns="http://www.filemaker.com/fmpxmlresult">
        <RESULTSET FOUND="445">
            <ROW MODID="45" RECORDID="1">
                <COL>
                    <DATA>Integrating Ethanol</DATA>
                </COL>
                <COL>
                    <DATA/>
                </COL>
                <COL>
                    <DATA>train track and gas pump</DATA>
                </COL>
                <COL>
                    <DATA/>
                </COL>
                <COL>
                    <DATA/>
                </COL>
                <COL>
                    <DATA>1.jpg</DATA>
                </COL>
                <COL>
                    <DATA/>
                </COL>
            </ROW>
            <ROW MODID="29" RECORDID="3">
                <COL>
                    <DATA>Keeping in Balance</DATA>
                </COL>
                <COL>
                    <DATA>21</DATA>
                </COL>
                <COL>
                    <DATA>book cover of Sweet Invisible Body</DATA>
                </COL>
                <COL>
                    <DATA/>
                </COL>
            </ROW>
        </RESULTSET>
      </FMPXMLRESULT>
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Dirk Vollmar    14 年前

    可以尝试使用以下忽略命名空间的xpath表达式:

    //*[local-name() = 'COL']
    

    此表达式选择名称为“col”的所有节点,无论节点位于哪个命名空间中。

        2
  •  0
  •   bitcycle    14 年前

    正确的xpath应该是

    //COL

    没有

    *

    我认为您的问题可能是XML名称空间,当我通过使用Google找到的这个工具运行XML时,它给我带来了问题: http://www.xmlme.com/XpathTool.aspx