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 に答える