猿问

使用SimpleXML解析带有名称空间的XML

使用SimpleXML解析带有名称空间的XML

我把它作为XML:

<root xmlns:event="http://www.webex.com/schemas/2002/06/service/event">
    <event:event>
        <event:sessionKey></event:sessionKey>
        <event:sessionName>Learn QB in Minutes</event:sessionName>
        <event:sessionType>9</event:sessionType>
        <event:hostWebExID></event:hostWebExID>
        <event:startDate>02/12/2009</event:startDate>
        <event:endDate>02/12/2009</event:endDate>
        <event:timeZoneID>11</event:timeZoneID>
        <event:duration>30</event:duration>
        <event:description></event:description>
        <event:status>NOT_INPROGRESS</event:status>
        <event:panelists></event:panelists>
        <event:listStatus>PUBLIC</event:listStatus>
    </event:event>
    ...</root>

如何循环遍历所有事件:事件节点并显示,例如,所有事件:SessionKey‘s?

这是行不通的:

$xml = new SimpleXMLElement($r);$xml->registerXPathNamespace('e', ' 
foreach($xml->xpath('//e:event') as $event) {
 var_export($event->xpath('//e:sessionKey'));}


倚天杖
浏览 709回答 3
3回答

临摹微笑

如果没有registerXPathNamespace以及XPath查询中的完整命名空间前缀:$xml&nbsp;=&nbsp;new&nbsp;SimpleXMLElement($r);foreach($xml->xpath('//event:event')&nbsp;as&nbsp;$event)&nbsp;{ &nbsp;var_export($event->xpath('event:sessionKey'));}

慕田峪4524236

这是对我有用的另一种选择。$xml&nbsp;=&nbsp;simplexml_load_string($r);$ns&nbsp;=&nbsp;$xml->getNamespaces(true);foreach&nbsp;($xml->children($ns['event'])->event&nbsp;as&nbsp;$skey)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;$sessionKey&nbsp;=&nbsp;$skey->children($ns['event'])->sessionKey; &nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;$sessionKey;}
随时随地看视频慕课网APP
我要回答