我需要一个Perl脚本来分隔XMl标记。例如:
<bgtres>
<resume key='267298871' score='5'>
<xpath path='xpath://resume'>
<resume canonversion='2' dateversion='2' present='734060'>........... </resume></xpath></resume>
</bgtres>
在这个XML文件中,我需要将resume标签下的内容(在xpath内)分开,在xpath之后出现的resume标签应该单独从一堆CV中提取。我需要在Perl Script中执行此操作。
任何人都可以给我一个提示或编码来完成这个过程。我需要Perl脚本来执行此过程
先谢谢
答案 0 :(得分:5)
喜欢
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;
my $xml = q~<?xml version='1.0'?>
<bgtres>
<resume key='267298871' score='5'>
<xpath path='xpath://resume'>
<resume canonversion='2' dateversion='2' present='734060'>
</resume>
</xpath>
</resume>
</bgtres>~;
print $xml,$/;
my $data = XMLin($xml);
print Dumper( $data );
foreach my $test (keys %{$data->{resume}{xpath}{resume}}){
print"$test : $data->{resume}{xpath}{resume}->{$test}\n";
}
<强>输出:强>
<?xml version='1.0'?>
<bgtres>
<resume key='267298871' score='5'>
<xpath path='xpath://resume'>
<resume canonversion='2' dateversion='2' present='734060'>
</resume>
</xpath>
</resume>
</bgtres>
$VAR1 = {
'resume' => {
'xpath' => {
'resume' => {
'dateversion' => '2',
'canonversion' => '2',
'present' => '734060'
},
'path' => 'xpath://resume'
},
'score' => '5',
'key' => '267298871'
}
};
dateversion : 2
canonversion : 2
present : 734060
答案 1 :(得分:3)
我仍然是perl的新手,我不是专家。也就是说,我最近不得不解析XML文件,最后我使用了XML::DOM。我看到的好处是,当我不得不在一个月后回到它以添加更多功能时,代码仍然相当容易阅读。这是一个打印canonversion的小片段
use XML::DOM;
# Create instance of XML Dom Parser
my $parser = new XML::DOM::Parser;
# Read XML Doc
my $doc = $parser->parsefile ("$XMLFile");
# Fetch all resume tags
foreach my $resume ($doc->getElementsByTagName("resume")) {
$canonversion = $resume->getAttributeNode("BuildName")->getValue;
# Do something with it
print $canonversion;
}
希望有所帮助。
答案 2 :(得分:-1)
您需要使用XML Parser in Perl。