使用命名空间解析XML会导致致命错误

时间:2013-11-07 05:58:26

标签: xml xml-parsing namespaces

我无法使用registerXPathNamespace从xml文件中正确显示值。有人可以指出我做错了什么吗?我是带有命名空间的XML新手。

以下是我正在使用的代码

$cpe = simplexml_load_file('test.xml');

$sxe=new SimpleXMLElement($cpe);
$sxe->registerXPathNamespace('ipdr','http://www.ipdr.org/namespaces/ipdr');

$result0=$sxe->xpath('ipdr:IPDR->BulkData[0]')->Value;
$result1=$sxe->xpath('ipdr:IPDR->BulkData[1]')->Value;

echo $result0 ' <br> ' $result1; 

这是XML文件test.xml

<ipdr:IPDRDoc xmlns:ipdr="http://www.ipdr.org/namespaces/ipdr"
xmlns="urn:broadband-forum-org:ipdr:tr-232-1-0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:broadband-forum-org:ipdr:tr-232-1-0 tr-232-1-0-0-serviceSpec.xsd http://www.ipdr.org/namespaces/ipdr http://www.ipdr.org/public/IPDRDoc3.5.1.xsd"
docId="74697373-6f74-7878-7878-746973736f74"
creationTime="2013-06-11T05:52:55.153Z"
IPDRRecorderInfo="TEST IPDR Collector"
version="3.5.1">
    <ipdr:IPDR xsi:type="BulkDataReport">
    <BulkData>
        <Name>InternetGatewayDevice.DeviceInfo.UpTime</Name>
        <Value>1449</Value>
    </BulkData>
    <BulkData>
        <Name>InternetGatewayDevice.ManagementServer.URL</Name>
        <Value>www.yahoo.com</Value>
    </BulkData>
    </ipdr:IPDR >
    <ipdr:IPDRDoc.End count="1" endTime="2013-06-11T05:52:55.207Z"></ipdr:IPDRDoc.End>
</ipdr:IPDRDoc>

1 个答案:

答案 0 :(得分:0)

最后我开始工作了。这是我用来从text.xml文件中获取URL值的代码。

$url = $xml->xpath("//ns:BulkData[ns:Name='InternetGatewayDevice.ManagementServer.URL']/ns:Value"); 
$url = $url[0];