良好的xpath,但在PHP中没有结果

良好的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

我编写了以下xpath:

//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');