首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML::LibXML: doc - root

XML::LibXML: doc - root
EN

Stack Overflow用户
提问于 2013-07-21 15:43:32
回答 1查看 345关注 0票数 0

这里是第一个示例中documentElemtent的调用是否多余?

代码语言:javascript
复制
#!/usr/bin/env perl
use warnings;
use strict;
use XML::LibXML;

代码语言:javascript
复制
my $file = 'xml_file';

my $doc = XML::LibXML->load_xml( location => $file );
my $root = $doc->documentElement();
my $xpc = XML::LibXML::XPathContext->new( $root );
# ...
say $_->nodeName for $xpc->findnodes( '/' );

输出

代码语言:javascript
复制
#document

代码语言:javascript
复制
$doc = XML::LibXML->load_xml( location => $file );
$xpc = XML::LibXML::XPathContext->new( $doc );
# ...
say $_->nodeName for $xpc->findnodes( '/' );

产出也

代码语言:javascript
复制
#document
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-22 15:03:14

主题节点中定义的任何前缀都由xpc采用,因此如果根节点上定义了前缀,则这两个前缀是不同的。

代码语言:javascript
复制
use warnings;
use strict;
use feature qw( say );

use XML::LibXML qw( );

my $xml = <<'__EOI__';
<root xmlns:foo="uri:xxx">
<foo:bar/>
</root>
__EOI__

my $doc  = XML::LibXML->load_xml( string => $xml );
my $root = $doc->documentElement();

{
   my $xpc = XML::LibXML::XPathContext->new($doc);
   say "doc:";
   say $_->nodeName for $xpc->findnodes('foo:bar');
}

say "";

{
   my $xpc  = XML::LibXML::XPathContext->new($root);
   say "root:";
   say $_->nodeName for $xpc->findnodes('foo:bar');
}
代码语言:javascript
复制
doc:

root:
foo:bar
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17774034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档