我使用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>
答案 0 :(得分:1)
您可以尝试使用以下忽略命名空间的XPath表达式:
//*[local-name() = 'COL']
此表达式选择名称为“COL”的所有节点,无论节点位于什么名称空间中。
答案 1 :(得分:0)
这个的正确xpath是
//COL
没有
*
我认为您的问题可能是XML命名空间,当我通过使用Google找到的此工具运行XML时,这会导致我的问题:http://www.xmlme.com/XpathTool.aspx