我有一个xml,我需要解析xml并遍历到最后一个孩子,XML会动态生成,所以我不知道XML的深度,我可以遍历xml直到它的最后一个子级和兄弟姐妹(如果有的话)吗?请帮助解决此问题:
我的代码片段是:
foreach my $childNodes ($root->findnodes('/'))
{
print $childNodes->nodePath;
print "n";
if($childNodes->hasChildNodes)
{
foreach my $gChildNode ($camelid->childNodes)
{
print $gChildNode->nodePath;
print "n";
}
}
这将打印节点直到深度 2,但如果深度为 3,我的意思是根有一个子节点,我的代码打印它,但如果这里有另一个子节点,代码将不会打印并且无法猜测..我怎么能找到这个.
提前谢谢。
只需包装代码即可在函数中处理节点并递归调用它。带有一些附加注释的示例:
sub process_node {
my $node = shift;
print $node->nodePath, "n";
# No need to check hasChildNodes. If there aren't any
# children, childNodes will return an empty array.
for my $child ($node->childNodes) {
# Call process_node recursively.
process_node($child);
}
}
# documentElement is more straight-forward than findnodes('/').
process_node($root->documentElement);