如何访问由XML :: Parser创建的解析树?
发布时间:2020-12-16 23:12:49 所属栏目:百科 来源:网络整理
导读:我有一个数组引用,其中包含一些数组引用.嵌套数组引用还包含数组引用. (这是 XML::Parser的 tree风格.) my $Filename = "sample.xml";my $Parser = new XML::Parser( Style = 'tree' );my $Tree = $Parser-parsefile( $Filename ); 这里$Tree是数组引用,它将
|
我有一个数组引用,其中包含一些数组引用.嵌套数组引用还包含数组引用. (这是
XML::Parser的
tree风格.)
my $Filename = "sample.xml"; my $Parser = new XML::Parser( Style => 'tree' ); my $Tree = $Parser->parsefile( $Filename ); 这里$Tree是数组引用,它将是数组引用,内容和嵌套深度都取决于xml文件.我想遍历嵌套数组$Tree并打印内容. 解决方法
这是一个简单的版本:
use strict;
use warnings;
sub printElement
{
my ($tag,$content) = @_;
if (ref $content) {
# This is a XML element:
my $attrHash = $content->[0];
print "<$tag>"; # I'm ignoring attributes
for (my $i = 1; $i < $#$content; $i += 2) {
printElement(@$content[$i,$i+1]);
}
print "</$tag>";
} else {
# This is a text pseudo-element:
print $content; # I'm not encoding entities
}
} # end printElement
sub printTree
{
# The root tree is always a 2-element array
# of the root element and its content:
printElement(@{ shift @_ });
print "n";
}
# Example parse tree from XML::Parser:
my $tree =
['foo',[{},'head',[{id => "a"},"Hello ",'em',"there"]],'bar',[ {},"Howdy",'ref',[{}]],"do"
]
];
printTree($tree);
虽然您可以通过$attrHash访问它们,但这不会打印属性.它也不对文本中的实体进行编码,因此生成的输出可能不会是格式良好的XML.我将这些作为练习留给读者. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
