一 读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 (-e $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 完! 感谢,Thanks!
总结以上是内存溢出为你收集整理的perl读写xml全部内容,希望文章能够帮你解决perl读写xml所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)