2

我需要获取XML::LibXML::Node范围内的所有命名空间。该模块有一个getNamespaces()方法,但文档明确说明它

不会返回范围内的所有命名空间,而只会返回为该节点显式声明的命名空间。

那么如何获取特定节点范围内的所有命名空间呢?

4

1 回答 1

3

我没有找到任何函数来执行此操作,但使用 XPath 肯定是可能的:

@nodes = $node->findnodes('namespace::*');

这将返回对 . 可见的范围内的所有命名空间$node。然后,您可以从返回的 XML::LibXML::Node::Namespace 对象中获取前缀和 URI:

@prefix_uris = map {[ $_->getLocalName, $_->getData]} @nodes;
于 2013-07-08T22:35:12.600 回答