我正在将XML文件的内容复制到另一个XML文件中,这是最后一行:
</references></resume></xpath>
我应该只写</resume>
,而不是</xpath>
如何在Perl中实现这一目标?我可以使用正则表达式吗?
这是我用来打印输出的命令:
$out_content .= "$_";
答案 0 :(得分:3)
看起来您正在通过字符串连接将XML片段组合成更大的片段。不要这样做,这很容易出错。相反,依靠真正的XML工具包来理解所涉及的复杂性。
答案 1 :(得分:1)
有两种方法可以做到:
$outContent = $contentOfOldXmlFile;
$outContent =~ s#^.*<xpath>((.|\n)*)</xpath>$#$1#;
XML::DOM
库use XML::DOM;
use XML::XQL;
use XML::XQL::DOM;
eval {
my $xml=new XML::DOM::Parser->parsefile($yourFilename);
my $outContent = "";
for($xml->xql(qq(//resume))) {
$outContent .= $_->toString();
}
$xml->dispose();
};
print "ERROR:$@\n" if $@;
然后您将新内容导入$outContent
,您可以打印或写入所需的文件。
最好使用XML::DOM
API获取您想要的内容(使用$node->toString()
),而不是连接字符串。