为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

倚天杖 2019-06-12 16:57:13
使用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'));}
查看完整描述

3 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

如果没有registerXPathNamespace以及XPath查询中的完整命名空间前缀:

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


查看完整回答
反对 回复 2019-06-12
?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

这是对我有用的另一种选择。

$xml = simplexml_load_string($r);$ns = $xml->getNamespaces(true);foreach ($xml->children($ns['event'])->event as $skey) {
    $sessionKey = $skey->children($ns['event'])->sessionKey;
    echo $sessionKey;}


查看完整回答
反对 回复 2019-06-12
  • 3 回答
  • 0 关注
  • 708 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信