Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1147367
  • 博文数量: 312
  • 博客积分: 12522
  • 博客等级: 上将
  • 技术积分: 3376
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-27 18:35
文章分类

全部博文(312)

文章存档

2016年(3)

2015年(1)

2013年(1)

2012年(28)

2011年(101)

2010年(72)

2009年(13)

2008年(93)

分类: Python/Ruby

2011-11-30 18:31:25

一 读xml

1)xml实例

xml version="1.0" encoding="UTF-8"?>
<employees> 
  
<employee age = "30">
    
<name>linuxname>
    
<country>UScountry>
  
employee>  
  
<employee age = "10">
    
<name>macname>
    
<country>UScountry>
  
employee>
  
<employee age = "20"> 
    
<name>windowsname>
    
<country>UScountry>
  
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.101address>
  
<address>10.0.1.101address>
server>
<server name="gobi" osname="irix" osversion="6.5">
  
<address>10.0.0.102address>
server>
<server name="kalahari" osname="linux" osversion="2.0.34">
  
<address>10.0.0.103address>
  
<address>10.0.1.103address>
server>
config>
_XML_STRING_

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

 

 

三 更多

常用参数:

  • or   表示读取出来的dict中的key。
  • or   表示dict中的子元素表示为array,而不是dict。
  •  表示是否将子元素和属性都写为属性,读入时是否忽略属性。
  • 表示写xml时的root节点名字。
  •  表示是处理取root节点

     

    xml-simple模块详细参考:

     

    完!

  • 感谢,Thanks!

    作者:iTech
    出处:http://itech.cnblogs.com/

    阅读(775) | 评论(0) | 转发(0) |
    0

    上一篇:perl 匹配例子

    下一篇:XML::Simple 模块

    给主人留下些什么吧!~~