首页 >后端开发 >php教程 >如何使用 SimpleXML 的 XPath 正确解析命名空间 XML?

如何使用 SimpleXML 的 XPath 正确解析命名空间 XML?

Susan Sarandon
Susan Sarandon原创
2024-12-18 10:05:10617浏览

How to Correctly Parse Namespaced XML with SimpleXML's XPath?

如何使用 SimpleXML 解析具有命名空间的 XML

问题:

尝试解析时使用 SimpleXML 的带有命名空间的 XML,遇到了 registerXPathNamespace() 的问题

XML 结构:

<root xmlns:event="http://www.webex.com/schemas/2002/06/service/event">
  <event:event>
    <event:sessionKey>...</event:sessionKey>
    ...
  </event:event>
  ...
</root>

示例 Xpath 查询:

尝试提取 'event:sessionKey'价值观使用:

$xml->registerXPathNamespace('e', 'http://www.webex.com/schemas/2002/06/service/event');
$event->xpath('//e:sessionKey')

解决方案:

问题在于 XPath 查询中命名空间前缀('e')和完整命名空间 URI 的必要性,即使不使用 registerXPathNamespace()。

已更正代码:

$xml = new SimpleXMLElement($r);

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

以上是如何使用 SimpleXML 的 XPath 正确解析命名空间 XML?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn