最近需要程序处理xml文件,根据条件修改相应的节点/元素。选用了脚本语言perl和xml 编辑工具Notepad++。
1. Perl 部分:
使用模块: XML::LibXML;
- 节点替换
foreach $theFind ( $theDom->findnodes($theCond)){
my $dom1 = XML::LibXML->load_xml(string=>$theRepl);
my $theR = $dom1->documentElement();
$ts = $theFind->replaceNode($theR);
}
- 节点插入
foreach my $theFind ( $theDom->findnodes($theCond)){
my $dom1 = XML::LibXML->load_xml(string=>$theInsert);
my $theR = $dom1->documentElement();
my $cloneNode= $theFind->cloneNode(1);
$theR->appendChild($cloneNode);
$ts= $theFind->replaceNode($theR);
}
2.Notepad++
在XML中定位节点/元素,需要编写 xpath, Notepad++ 有一个插件 xml tools 可以满足关键功能 XPath Expression Evaluation . 可以给出查询结果,美中不足,不能在编辑器中高亮显示,略有不便。
/module/composite-view[@id="2"]/window[@id="0"]/view/config/property/context-rv[@input-key="selectedTitle"]
发现一个非常好的XPath 特此留下链以备参考: 点击打开链接
ALT+0 折叠XML, 这个很实用。
最后,说点体会,成熟的工具往往容易获得更多帮助,我遇到的问题别人已遇到很多次了。Perl语言的表达能力的确非常强大。
需要功能更强大的开源的xml编辑工具。