从 XML 对象获取值?

Fetch value from XML Object?

我需要从 xml 中获取 "joinmeetingurl" 元素的值。我尝试了以下方式。但它returns没什么。请帮我取值。

<?php 

$xml = '<serv:message xmlns:serv="http://www.webex.com/schemas/2002/06/service"
        xmlns:com="http://www.webex.com/schemas/2002/06/common"
        xmlns:meet="http://www.webex.com/schemas/2002/06/service/meeting"
        xmlns:att="http://www.webex.com/schemas/2002/06/service/attendee">
          <serv:header>
            <serv:response>
              <serv:result>SUCCESS</serv:result>
                <serv:gsbstatus>PRIMARY</serv:gsbstatus>
            </serv:response>
          </serv:header>
          <serv:body>
            <serv:bodycontent xsi:type="meet:getjoinurlMeetingResponse"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
              <meet:joinmeetingurl>meetingURL</meet:joinmeetingurl>
           </serv:bodycontent>
        </serv:body>
       </serv:message>';

  $xml = simplexml_load_string($xml);
  $items = $xml->registerXPathNamespace('meet','http://www.webex.com/schemas/2002/06/service/meeting');

  $resp = $xml->xpath('//meet:joinmeetingurl');

?>

我总是得到 $resp 的空值。

无法提供 simplexml 和相关函数的指导,但使用标准 DOMDocumentDOMXPath

似乎很简单
$dom=new DOMDocument;
$dom->loadXML( $xml );

$xpath=new DOMXPath( $dom );
$col=$xpath->query('//meet:joinmeetingurl');
foreach( $col as $node )echo $node->nodeValue;
$dom=null;

您的 XPath 应该有效,您可以将元素转换为 string 以获取值,例如:

$xml = <<<XML
<serv:message xmlns:serv="http://www.webex.com/schemas/2002/06/service"
        xmlns:com="http://www.webex.com/schemas/2002/06/common"
        xmlns:meet="http://www.webex.com/schemas/2002/06/service/meeting"
        xmlns:att="http://www.webex.com/schemas/2002/06/service/attendee">
          <serv:header>
            <serv:response>
              <serv:result>SUCCESS</serv:result>
                <serv:gsbstatus>PRIMARY</serv:gsbstatus>
            </serv:response>
          </serv:header>
          <serv:body>
            <serv:bodycontent xsi:type="meet:getjoinurlMeetingResponse"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
              <meet:joinmeetingurl>meetingURL</meet:joinmeetingurl>
           </serv:bodycontent>
        </serv:body>
       </serv:message>
XML;

$xml = simplexml_load_string($xml);
$xml->registerXPathNamespace('meet','http://www.webex.com/schemas/2002/06/service/meeting');
$resp = $xml->xpath('//meet:joinmeetingurl');
echo (string)$resp[0];

eval.in demo

输出:

meetingURL