我有以下内容:
my $string='<entry><name>Bob</name><zip>90210</zip></entry>';
my $parser=XML::LibXML->new();
use HTML::Entities;
my $encodedXml=encode_entities($string,'&\'');
my $doc=$parser->parse_string($encodedXml);
foreach my $text($doc->findnodes("//text()")){
print $text->to_literal,"\n";
}
Run Code Online (Sandbox Code Playgroud)
这打印出'Bob'和'90210';
我如何获得实际的节点名称...我需要一种方法来获取我的xml树中的所有节点....即'name'和'zip'
文本节点没有名称.也许你想要父母的名字?
我认为这会奏效:
for my $node ($doc->findnodes('//text()')) {
print $node->parentNode()->nodeName(), ": ", $node->nodeValue(), "\n";
}
Run Code Online (Sandbox Code Playgroud)
我会用
for my $node ($doc->findnodes('//*[text()]')) {
print $node->nodeName(), ": ", $node->textContent(), "\n";
}
Run Code Online (Sandbox Code Playgroud)
注意:此更高版本组合了元素的所有文本子项,因此如果节点具有多个文本子项,则它不等效.不过,它们对你来说应该是等价的.