我需要获取XML::LibXML::Node范围内的所有名称空间。该模块有一个getNamespaces()
方法,但文档明确表示它是
不会返回范围内的所有名称空间,而只返回为该节点显式声明的名称空间。
那么,如何获取特定节点范围内的所有名称空间呢?
我没有找到任何函数来做这件事,但使用XPath:肯定是可能的
@nodes = $node->findnodes('namespace::*');
这将返回对$node
可见的范围中的所有命名空间。然后,您可以从返回的XML::LibXML::Node::Namespace对象中获取前缀和URI:
@prefix_uris = map {[ $_->getLocalName, $_->getData]} @nodes;