Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用XML::LibXML获取范围内的所有名称空间_Xml_Perl_Xml Libxml - Fatal编程技术网

使用XML::LibXML获取范围内的所有名称空间

使用XML::LibXML获取范围内的所有名称空间,xml,perl,xml-libxml,Xml,Perl,Xml Libxml,我需要获取一个应用程序范围内的所有名称空间。该模块有一个getNamespaces()方法,但文档明确指出 不会返回作用域中的所有名称空间,只返回为该节点显式声明的名称空间 那么,如何获取特定节点范围内的所有名称空间呢?我没有找到任何函数来实现这一点,但使用XPath肯定是可行的: @nodes = $node->findnodes('namespace::*'); 返回$node可见范围内的所有名称空间。然后,可以从返回的XML::LibXML::Node::Namespace对象中获

我需要获取一个应用程序范围内的所有名称空间。该模块有一个
getNamespaces()
方法,但文档明确指出

不会返回作用域中的所有名称空间,只返回为该节点显式声明的名称空间


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

我没有找到任何函数来实现这一点,但使用XPath肯定是可行的:

@nodes = $node->findnodes('namespace::*');
返回
$node
可见范围内的所有名称空间。然后,可以从返回的XML::LibXML::Node::Namespace对象中获取前缀和URI:

@prefix_uris = map {[ $_->getLocalName, $_->getData]} @nodes;