【发布时间】:2013-07-08 22:35:12
【问题描述】:
我需要获取XML::LibXML::Node 范围内的所有命名空间。该模块有一个getNamespaces() 方法,但文档明确说明它
不会返回范围内的所有命名空间,而只会返回为该节点显式声明的命名空间。
那么如何获取特定节点范围内的所有命名空间?
【问题讨论】:
标签: xml perl xml-libxml
我需要获取XML::LibXML::Node 范围内的所有命名空间。该模块有一个getNamespaces() 方法,但文档明确说明它
不会返回范围内的所有命名空间,而只会返回为该节点显式声明的命名空间。
那么如何获取特定节点范围内的所有命名空间?
【问题讨论】:
标签: xml perl xml-libxml
我没有找到执行此操作的任何函数,但使用 XPath 肯定可以:
@nodes = $node->findnodes('namespace::*');
这将返回$node 可见范围内的所有命名空间。然后,您可以从返回的 XML::LibXML::Node::Namespace 对象中获取前缀和 URI:
@prefix_uris = map {[ $_->getLocalName, $_->getData]} @nodes;
【讨论】: