perl使用xml::simple来读写xml

 

一 读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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值