You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Perl计算HTML/XML嵌套标签层级并添加level属性

嵌套相同标签层级计算实现

处理XML标签层级计算不要用正则手写解析,直接用Perl的XML::Twig模块实现更稳定,能避免不规则XML格式导致的解析错误,具体实现如下:

完整代码

use strict;
use warnings;
use XML::Twig;

sub add_sec_level {
    my ($xml_str) = @_;
    my $twig = XML::Twig->new(
        pretty_print => 'indented',
        twig_handlers => {
            sec => sub {
                my ($t, $node) = @_;
                # 统计同名祖先节点数量,加1即为当前层级
                my $level = $node->ancestors('sec')->count + 1;
                $node->set_att('level', $level);
            }
        }
    );
    $twig->parse($xml_str);
    return $twig->sprint;
}

# 测试示例
my $input = <<'XML';
<sec>
  <sec></sec>
  <sec>
    <sec></sec>
  </sec>
</sec>
XML

print add_sec_level($input);

说明

  • 运行后输出和需求中的期望结果完全一致,保留原有缩进格式
  • 核心逻辑通过ancestors('sec')直接统计当前节点所有同名祖先的数量,计算层级的逻辑完全匹配需求
  • 如果环境缺失XML::Twig模块,执行cpan XML::Twig即可安装
  • 该方案兼容带有其他属性、子节点、注释的XML结构,不会破坏原有内容

内容的提问来源于stack exchange,提问作者Rajkumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:57:02