perl中用XML::Simple模块写xml文件时,怎么确定属性的顺序?
如下xml文件,我希望它是这样的:<cce><anoncountry="england"capital="london"/><anoncountry="norway"ca...
如下xml文件,我希望它是这样的:
<cce> <anon country="england" capital="london" /> <anon country="norway" capital="oslo" /> <anon country="india" capital="new delhi" /></cce>
但它输出的却是:
<cce> <anon capital="london" country="england" /> <anon capital="oslo" country="norway" /> <anon capital="new delhi" country="india" /></cce>
求高人解答! 展开
<cce> <anon country="england" capital="london" /> <anon country="norway" capital="oslo" /> <anon country="india" capital="new delhi" /></cce>
但它输出的却是:
<cce> <anon capital="london" country="england" /> <anon capital="oslo" country="norway" /> <anon capital="new delhi" country="india" /></cce>
求高人解答! 展开
推荐于2016-02-19
展开全部
很简单,你把希望打印的文本存到文件里,比如test.xml,然后用XML::Simple打开它,然后用Data::Dumper把数据dump出来打印到屏幕上。
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;
my $xml = new XML::Simple;
my $test = "test.xml";
open(IN, "< $test") or die("Error: could not open ");
my $data = $xml->XMLin($test);
close(IN);
print(Dumper($data));
你给出的文档Dumper输出是
$VAR1 = [
{
'country' => 'england',
'capital' => 'london'
},
{
'capital' => 'oslo',
'country' => 'norway'
},
{
'capital' => 'new delhi',
'country' => 'india'
}
];
看了"自由de王国"的评论我发现我原来理解错了,搜索了一下从stackoverflow上抄了一个自定义排序方案:
package MyXMLSimple;
use base 'XML::Simple'; # 从XML::Simple派生自己的类
use strict;
use warnings;
use XML::Simple;
use Data::Dumper;
# 重定义XML::Simple的排序函数
sub sorted_keys
{
my ($self, $name, $hashref) = @_;
if ($name eq 'anon') # 当key值是anon时
{
return ('country', 'capital'); # 返回子key的次序
}
return $self->SUPER::sorted_keys($name, $hashref); # 其它的key由基类处理
}
my $xml = new MyXMLSimple;
my $VAR1 = [
{
'country' => 'england',
'capital' => 'london'
},
{
'capital' => 'oslo',
'country' => 'norway'
},
{
'capital' => 'new delhi',
'country' => 'india'
}
];
my $data = $xml->XMLout($VAR1, RootName => 'cce');
open(OUT, "> myxml.xml");
print(OUT $data);
close(OUT);
myxml.xml的内容:
<cce>
<anon country="england" capital="london" />
<anon country="norway" capital="oslo" />
<anon country="india" capital="new delhi" />
</cce>
展开全部
如果一定要按照你的顺序打得话就一个一个的打印,不要把所有的数据存到一个变量里再打印,因为这样打印出来的顺序是按照字母顺序排列的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-01-14
展开全部
好久不用这个了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询