php - 使用 SimpleXML 解析带有命名空间的 XML

标签 php xml namespaces simplexml

我有这个作为 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>

如何循环遍历所有 event:event 节点并显示,例如,所有 event:SessionKey 的?

这不起作用:

$xml = new SimpleXMLElement($r);
$xml->registerXPathNamespace('e', 'http://www.webex.com/schemas/2002/06/service/event');

foreach($xml->xpath('//e:event') as $event) {
 var_export($event->xpath('//e:sessionKey'));
}

最佳答案

它在没有 registerXPathNamespace 和 xpath 查询中的完整命名空间前缀的情况下也能工作:

$xml = new SimpleXMLElement($r);

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

关于php - 使用 SimpleXML 解析带有命名空间的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/595946/

相关文章:

php - 为什么在使用不同 PC 但具有相同配置时 MIME 类型不同?

c# - 如何使用 linq to sql 将 xml 文件存储在 xml 列中?

xml - Golang XML 解码问题 : local name collisions fail

python - 使用 python 的 debhelper 不部署命名空间包

php - 从数据库检索时不解析价格 $XX.XXX

php - Laravel:表单验证未按预期工作

php - 获取数组 php bigtee

php - 在 PHP 中解析巨大的 XML 文件

xml - XSLT如何在不更改属性的情况下将其添加到现有模板中

linux - 在 linux 内核模块中获取全局网络命名空间的实例