我有一个XML,它有一个“ - ”以及在它的头部和标签值的开头一个空格..我需要替换“_”没有(NULL)和删除XML的第二行即<HEADER ASOF_DATE="2/15/2013" CREATE_DATE="2/17/2013" RECORDS="5">
XML搜索和替换值使用perl
并且在每个XML记录的NAME列或SHORT_DESC列中可能有或可能不是“&”..如果它存在于NAME列中,它必须替换为“$$$”,并保存文件...
下面是XML文件..
- <HEADER>
- <HEADER ASOF_DATE="2/15/2013" CREATE_DATE="2/17/2013" RECORDS="5">
- <TAG>
<SHORT_DESC>XXX & CO MTN RegS</SHORT_DESC>
<NAME>XXX & CO</NAME>
</TAG>
- <TAG>
<SHORT_DESC>XYZ & DEV</SHORT_DESC>
<NAME>XYZ & DEVELOP</NAME>
</TAG>
- <TAG>
<SHORT_DESC>AB&C INC</SHORT_DESC>
<NAME>AB&C INC</NAME>
</TAG>
- <TAG>
<SHORT_DESC>AAA BBB & COMPANY</SHORT_DESC>
<NAME>AAA BBB & COMPANY</NAME>
</TAG>
- <TAG>
<SHORT_DESC>ABC XYZ</SHORT_DESC>
<NAME>ABC XYZ</NAME>
</TAG>
- </HEADER>
的O/P应..
<HEADER>
<TAG>
<SHORT_DESC>XXX $$$ CO MTN RegS</SHORT_DESC>
<NAME>XXX $$$ CO</NAME>
</TAG>
<TAG>
<SHORT_DESC>XYZ $$$ DEV</SHORT_DESC>
<NAME>XYZ $$$ DEVELOP</NAME>
</TAG>
<TAG>
<SHORT_DESC>AB$$$C INC</SHORT_DESC>
<NAME>AB$$$C INC</NAME>
</TAG>
<TAG>
<SHORT_DESC>AAA BBB $$$ COMPANY</SHORT_DESC>
<NAME>AAA BBB $$$ COMPANY</NAME>
</TAG>
<TAG>
<SHORT_DESC>ABC XYZ</SHORT_DESC>
<NAME>ABC XYZ</NAME>
</TAG>
</HEADER>
下面是代码...但它不保存与修改xml文件
#!/usr/bin/perl
use strict;
use warnings;
my $tag = 'SHORT_DESC';
open my $fh, '<test.xml' or die $!;
foreach (<$fh>) {
s/&/@@@/g;
s/- //g;
print $_;
}
close $fh;
[参考](http://stackoverflow.com/questions/2052179/how-can-i-find-and-replace-text-in-xml-using-perl) – gks 2013-04-29 08:26:24
显示您完成的Perl代码至今。 – 2013-04-29 09:28:28
同意上面提到的第一个答案,XML :: Twig是好的 – Vorsprung 2013-04-29 09:33:40