• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

perl使用xml::simple来读写xml

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

一 读xml

1)xml实例

<?xml version="1.0" encoding="UTF-8"?>
<employees> 
  
<employee age = "30">
    
<name>linux</name>
    
<country>US</country>
  
</employee>  
  
<employee age = "10">
    
<name>mac</name>
    
<country>US</country>
  
</employee>
  
<employee age = "20"> 
    
<name>windows</name>
    
<country>US</country>
  
</employee>
</employees>

 

2)代码

use File::Basename;
use XML::Simple;
use Data::Dumper;

my $xmlfile = dirname($0. "\\employees.xml";
if (-$xmlfile)
{
    
print "-----------------------------------------\n";
    
my $userxs = XML::Simple->new(KeyAttr => "name");
    
my $userxml = $userxs->XMLin($xmlfile);
    
# print output
    print Dumper($userxml);
    
    
my %allemployees = %{$userxml->{employee}};
    
foreach my $key (keys(%allemployees))
    {
      
print $key . " ";
      
print $allemployees{$key}{"age". "\n";
    }

    
print "-----------------------------------------\n";
       
my $userxsT = XML::Simple->new(ForceArray => 1);
    
my $userxmlT = $userxsT->XMLin($xmlfile);
    
# print output
    print Dumper($userxmlT); 
    
    
my @allemployeeT = @{$userxmlT->{"employee"}};
    
foreach my $employee (@allemployeeT)
    {
      
print $employee->{"name"}[0. " ";
      
print $employee->{"age". "\n";
    }    
}

 

3)结果

 

二 写xml

代码:

use File::Basename;
use XML::Simple;
use Data::Dumper;

print "-----------------------------------------\n";
# create array
my @arr = [ 
        {
'country'=>'england', 'capital'=>'london'},
        {
'country'=>'norway', 'capital'=>'oslo'},
        {
'country'=>'india', 'capital'=>'new delhi'} ];

# create object
my $xml = new XML::Simple(NoAttr=>1, RootName=>'dataroot');

# convert Perl array ref into XML document 
my $data = $xml->XMLout(\@arr,outputfile => "output1.xml");


print "-----------------------------------------\n";
my $str=<<_XML_STRING_;
<config logdir="/var/log/foo/" debugfile="/tmp/foo.debug">
<server name="sahara" osname="solaris" osversion="2.6">
  
<address>10.0.0.101</address>
  
<address>10.0.1.101</address>
</server>
<server name="gobi" osname="irix" osversion="6.5">
  
<address>10.0.0.102</address>
</server>
<server name="kalahari" osname="linux" osversion="2.0.34">
  
<address>10.0.0.103</address>
  
<address>10.0.1.103</address>
</server>
</config>
_XML_STRING_

my $xml_ref=XMLin($str,KeepRoot => 1);
my $xml_str=XMLout($xml_ref,outputfile => "output2.xml");
print "-----------------------------------------\n";

 

 

三 更多

常用参数:

  • KeyAttr => [ list ] # in+out - important or KeyAttr => { list } # in+out - important  表示读取出来的dict中的key。
  • ForceArray => 1 # in - important or ForceArray => [ names ] # in - important  表示dict中的子元素表示为array,而不是dict。
  • NoAttr => 1 # in+out - handy 表示是否将子元素和属性都写为属性,读入时是否忽略属性。
  • RootName => 'string' # out - handy 表示写xml时的root节点名字。
  • KeepRoot => 1 # in+out - handy 表示是处理取root节点

     

    xml-simple模块详细参考:http://search.cpan.org/~grantm/XML-Simple-2.18/lib/XML/Simple.pm

     

    完!


  • 鲜花

    握手

    雷人

    路过

    鸡蛋
    该文章已有0人参与评论

    请发表评论

    全部评论

    专题导读
    上一篇:
    Perl 5.16.2 发布发布时间:2022-07-22
    下一篇:
    perl模式发布时间:2022-07-22
    热门推荐
    热门话题
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap