簡體   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