dongti8535 2016-02-05 01:03
浏览 50
已采纳

使用命名空间从XML中提取数据

Hi I cant quite get the coding right to extract this one string (hostPIN) from the XML response below. I've been searching and searching and cant get anything to work. Can anyone direct me on how to extract that data using PHP? Thanks!

I am posting just the path to the data I need to get because the xml data is quite large.

<serv:message>
 <serv:body>
  <serv:bodyContent xsi:type="use:getUserResponse">
   <use:personalMeetingRoom>
     <use:hostPIN>1234</use:hostPIN>

How do I extract 1234? The namespaces are messing me up and I've read post after post but can't find one that would work with this.

Thanks for any help anyone can provide!

  • 写回答

2条回答 默认 最新

  • doujie7346 2016-02-05 01:38
    关注

    This is a base example with DOMDocument:

    $dom = new DOMDocument();
    $dom->loadXML( $xmlString, LIBXML_NOBLANKS );
    $nsURI = $dom->lookupNameSpaceUri( 'use' );
    foreach( $dom->getElementsByTagNameNS ( $nsURI , 'hostPIN' ) as $node )
    {
        echo $node->nodeValue.PHP_EOL;
    }
    

    If you will load xml from a file/url instead that from a string, use $dom->load instead of $dom->loadXML.

    $node->nodeValue is the value that you want.

    Please note:

    In the example above, $dom->lookupNameSpaceUri( 'use' ) may not work, depending on where the namespace is declared. In this case, you can find by you the namespaceURI (it's declared somewhere in document as xmlns:use="http://example.com/someurl") and replace this line:

    $nsURI = $dom->lookupNameSpaceUri( 'use' );
    

    whit this:

    $nsURI = "http://example.com/someurl";
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!