如何使用 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中文网其他相关文章!