perl的XML解析的帮助
问题描述:
我有这样perl的XML解析的帮助
<testcase>
<sf_params>
<dir>1</dir>
<sfid>2</sfid>
</sf_params>
</testcase>
我用XML ::简单(perl的解析)一个XML文件,并得到了O/P为
$VAR1 = {
'sf_params' => [
{
'sfid' => [
'2'
],
'dir' => [
'1'
]
}
]
};
如何访问或将值dir
分配给变量,例如$dir = $var1->{sf_params}->{dir}
答
会XML :: XPath模块对您有帮助吗?尝试这样的代码
my $file = XML::XPath->new (xml => "/path/to/your/file.xml");
my $dirs = $file->find('/sf_params/dir');
foreach my $foo ($dirs->get_nodelist) {
printf "dir is %s\n",$foo->string_value;
}
并调整到您的需要:)
答
不要使用ForceArray => 1
选项(=使用ForceArray => 0
)。然后你会得到
$VAR1 = {
'sf_params' => {
'sfid' => '2',
'dir' => '1'
}
};
和
$dir = $var1->{sf_params}->{dir}
会工作。或者,如果你必须使用ForceArray
:
$dir = $var1->{sf_params}->[0]->{dir}->[0];
会在这种情况下工作,但它的丑陋。
它不适合我 – 2010-08-25 09:09:05