2013-11-07 4 views
0

У меня возникли проблемы с использованием registerXPathNamespace для правильного отображения значений из XML-файла. Может ли кто-нибудь указать, что я делаю неправильно? Я новичок в 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> 
+0

Я рассмотрел связанные вопросы и нашел много ответов на случай, когда дочерние элементы имеют пространство имен. В моем случае даже корневой элемент имеет пространство имен. Меня это смущает. – user2755910

+0

На каком языке это? PHP? –

ответ

0

Наконец я получил его на работу. Вот код, который я использовал для получения значения URL из моего файла text.xml.

$url = $xml->xpath("//ns:BulkData[ns:Name='InternetGatewayDevice.ManagementServer.URL']/ns:Value"); 
$url = $url[0]; 
Смежные вопросы