【问题标题】:get all namespaces in scope with XML::LibXML使用 XML::LibXML 获取范围内的所有命名空间
【发布时间】:2013-07-08 22:35:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: xml perl xml-libxml


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      相关资源
      最近更新 更多