чтение данных xml пространства имен с использованием php

У меня есть данные xml как

        <ns:PartyIDs>
          <ns:ID schemeName="PartyTypeNumber">009</ns:ID>
          <ns:ID schemeName="PartyNumber">00038</ns:ID>
          <ns:ID schemeName="PartySubNumber">00038</ns:ID>
        </ns:PartyIDs>

мне нужно прочитать это и распечатать атрибуты и значение. Использование PHP.

прямо сейчас я пытаюсь использовать DOMDocument

 $soap_do = curl_init(); 
curl_setopt($soap_do, CURLOPT_URL,            $url ); 
curl_setopt($soap_do, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($soap_do, CURLOPT_TIMEOUT,        10); 
curl_setopt($soap_do, CURLOPT_RETURNTRANSFER, true );
curl_setopt($soap_do, CURLOPT_SSL_VERIFYPEER, false);  
curl_setopt($soap_do, CURLOPT_SSL_VERIFYHOST, false); 
curl_setopt($soap_do, CURLOPT_POST,           true ); 
curl_setopt($soap_do, CURLOPT_POSTFIELDS,    $domObject->saveXML()); 
curl_setopt($soap_do, CURLOPT_HTTPHEADER,     array('Content-Type: text/xml; charset=utf-8', 'Content-Length: '.strlen($domObject->saveXML()) )); 

 $response = curl_exec($soap_do);  
    $xml = new SimpleXMLElement($response);   //file from response
     $fileName="Response".date("Ymd_H_i_s");
      $xml->saveXML($fileName);

 $doc = new DOMDocument();
 $doc->load($fileName);//loading response file  

person Santy    schedule 10.09.2015    source источник
comment
Вы должны задать вопрос? что происходит не так? что ты пробовал?   -  person Clayton Wilkinson    schedule 10.09.2015
comment
Вам следует изучить XPath для обработки данных в DOMDocument по определенным именам узлов. Смотрите здесь для вдохновения: stackoverflow.com/questions/230592/xpath-query-with-php   -  person Dan Belden    schedule 10.09.2015
comment
когда я пытаюсь использовать $PartyIDs=$doc-›getElementsByTagName('ns:PartyIDs'); $id=$PartyIDs-›item(0); эхо $id-›nodeValue; это дает мне сообщение об ошибке «Попытка получить свойство не-объекта»   -  person Santy    schedule 10.09.2015
comment
Привет, Дэн, как сделать то же самое с XPath, когда теги имеют пространство имен, например ‹ns:lemonade›   -  person Santy    schedule 10.09.2015


Ответы (1)


Вместо этого используйте $doc->getElementsByTagNameNS().

Подробнее см. в руководстве: http://php.net/DOMDocument.getElementsByTagNameNS.

Вам нужно будет предоставить параметр $namespaceUri, который должен был быть указан в корневом элементе XML-файла как xmlns:ns="http://...".

person Steven Hilder    schedule 10.09.2015
comment
Спасибо всем очень помогло - person Santy; 10.09.2015