说说你如何使用 perl 解析这个特定的 XML
一点背景知识:我正在编写一个 perl 脚本,其中我将 XML(datamod) 分成两个 XML 文件。
示例:现有 XML
<Root>
<Top>
<Module name="ALU">
<input name="po_ctrl"/>
<bidirection name="add"/>
</Module>
<Module name="Po_ctrl">
<input name="ctrl"/>
<output name="ctrlbus"/>
<bidirection name="add"/>
</Module>
<input name="add"/>
<input name="clk"/>
<input name="da_in"/>
<output name="da_out"/>
<bidirection name="ctrl"/>
</Root>
</Top>
下面是编写的 perl 片段
open(IN_FILE, "<datamod.xml") or die "Cant open input file";
open(TM1_FILE, ">tm1.xml") or die "Cant Open tm1.xml";
open(TM2_FILE, ">tm2.xml") or die "Cant Open tm2.xml";
my $chk = 0;
while(my $line = <IN_FILE>){
$line =~ s/^\s+//;
@xwords = split(" ",$line);
if($xwords[0] ne "<Module" and $xwords[0] ne "</Module>" and $chk ==0) {
print TM1_FILE $line;
}
else {
print TM2_FILE $line;
$chk = 1;
}
if($xwords[0] eq "</Module>" and $chk == 1) {
$chk = 0;
}
}
close TM1_FILE;
close TM2_FILE;
预期输出到两个临时文件
临时文件 1:
<Root>
<Top>
<input name="add"/>
<input name="clk"/>
<input name="da_in"/>
<output name="da_out"/>
<bidirection name="ctrl"/>
</Top>
</Root>
临时文件 2
<Root>
<Top>
<Module name="ALU">
<input name="po_ctrl"/>
<bidirection name="add"/>
</Module>
<Module name="Po_ctrl">
<input name="ctrl"/>
<output name="ctrlbus"/>
<bidirection name="add"/>
</Module>
</Root>
</Top>
注意:我正在使用该XML::Simple
模块,因为 Perl 脚本是在其中编写的,并且转换为任何其他 XML 模块都很乏味。
任何帮助表示赞赏,请发布重写的片段!