良好的xpath,但在PHP中没有结果
我编写了以下xpath:良好的xpath,但在PHP中没有结果,php,xml,xpath,Php,Xml,Xpath,我编写了以下xpath: //datas[child::node()//DataInfo/DataInfoItem[contains(@Value,'EA22')]] 应用于以下XML: <?xml version="1.0" encoding="utf-8"?> <root> <Customer Modified="false"> <datas> <FireData> <Data
//datas[child::node()//DataInfo/DataInfoItem[contains(@Value,'EA22')]]
应用于以下XML:
<?xml version="1.0" encoding="utf-8"?>
<root>
<Customer Modified="false">
<datas>
<FireData>
<DataInfo>
<DataInfoItem Name="place" Value="g5688"/>
<DataInfoItem Name="number" Value="EA22"/>
<DataInfoItem Name="use" Value="ice"/>
</DataInfo>
<DataHistorics>
<DataHistoric HistoDate="2013-11-25T07:54:31" Type="0" visual="691.77"/>
<DataHistoric HistoDate="2013-12-02T07:23:29" Type="0" visual="618.65"/>
</DataHistorics>
<FireDataData Previous="106256.71"/>
</FireData>
</datas>
</Customer>
<Customer Modified="false">
<datas>
<FireData>
<DataInfo>
<DataInfoItem Name="place" Value="g5678"/>
<DataInfoItem Name="number" Value="GH44"/>
<DataInfoItem Name="use" Value="ice"/>
</DataInfo>
<DataHistorics>
<DataHistoric HistoDate="2013-11-25T07:54:31" Type="0" visual="691.77"/>
<DataHistoric HistoDate="2013-12-02T07:23:29" Type="0" visual="618.65"/>
</DataHistorics>
<FireDataData Previous="106256.71"/>
</FireData>
</datas>
</Customer>
我真的不明白,我在另一次讨论中读到var_dump不适合打印xpath查询的结果,但我尝试了很多方法,我认为从那以后不会有效果
有人能帮我吗
多谢各位 首先,在您的示例XML中,末尾缺少了一个
,但我想这只是一个复制/粘贴错误
代码中的问题是没有将文件名放在引号中:
$xml = simplexml_load_file(test.xml);
如果你做了类似于echo hello的事情代码>,PHP试图通过将“hello”解释为字符串来进行补偿。然而,在您的例子中,它所做的是将其解释为两个字符串:“test”和“xml”,因为
是字符串连接运算符。因此,它将尝试打开“testxml”(如果将“test”和“xml”放在一起,就会得到“testxml”),而不是“test.xml”
解决办法是:
$xml = simplexml_load_file('test.xml');
然后它对我来说就很好了。在PHP和普通DOM中似乎可以找到:您的代码对我来说很好:-错误可能不在xpath表达式中。
$xml = simplexml_load_file(test.xml);
$xml = simplexml_load_file('test.xml');