繁体   English   中英

使用名称空间从XML提取数据

[英]Extract data from XML with namespaces

嗨,我还不太了解从下面的XML响应中提取一个字符串(hostPIN)的编码权。 我一直在搜寻,却找不到任何工作。 谁能指导我如何使用PHP提取数据? 谢谢!

我只发布了我需要获取的数据的路径,因为xml数据很大。

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

如何提取1234? 命名空间把我弄得一团糟,我一遍又一遍地阅读,但找不到适合的方法。

感谢您提供任何帮助!

感谢@ fusion3k再进行几次调整后,我可以使用它

$dom = new DOMDocument();
$dom->loadXML( $data, LIBXML_NOBLANKS );
$nsURI = "http://www.webex.com/schemas/2002/06/service/user";
foreach( $dom->getElementsByTagNameNS ( $nsURI , 'hostPIN' ) as $node )
{
   echo $node->nodeValue.PHP_EOL;
}

这是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;
}

如果要从文件/ URL而不是从字符串加载xml,请使用$dom->load而不是$dom->loadXML

$node->nodeValue是所需的值。

请注意:

在上面的示例中,取决于声明名称空间的位置, $dom->lookupNameSpaceUri( 'use' )可能不起作用。 在这种情况下,您可以找到自己的namespaceURI(在文档中以xmlns:use="http://example.com/someurl" )并替换以下行:

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

这:

$nsURI = "http://example.com/someurl";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM