[英]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.