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