【问题标题】:reading namespace xml data using php使用 php 读取命名空间 xml 数据
【发布时间】:2015-12-06 05:58:02
【问题描述】:

我有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  

【问题讨论】:

  • 你应该问一个问题吗?出了什么问题?你试过什么?
  • 您应该查看 XPath 以通过某些节点名称处理 DOMDocument 中的数据。请参阅此处获取灵感:stackoverflow.com/questions/230592/xpath-query-with-php
  • 当我尝试使用 $PartyIDs=$doc->getElementsByTagName('ns:PartyIDs'); $id=$PartyIDs->item(0);回声$id->节点值;它给了我错误说尝试获取非对象的属性
  • 你好 Dan,当标签的名称空间像 时,如何对 XPath 做同样的事情

标签: php xml-parsing xml-namespaces ixmldomdocument


【解决方案1】:

请改用$doc-&gt;getElementsByTagNameNS()

详见说明书:http://php.net/DOMDocument.getElementsByTagNameNS

您需要提供应该在 XML 文件的根元素中指定为 xmlns:ns="http://..."$namespaceUri 参数。

【讨论】:

  • 谢谢大家帮了大忙
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多