perl - 解析/生成xml

[b]原始的方法[/b]

test.xml

<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row col1="AnySQL" col2="4"></row>
<row col1="DBATools" col2="1"></row>
</rows>



test.pl

use XML::Simple;
my $xml = new XML::Simple;
my $data = $xml->XMLin("c:/test.xml");
if ($data->{'row'}) {
# Convert to hash, if it's array
if (ref $data->{'row'} eq "HASH") {
@$temp = ($data->{'row'});
$data->{'row'} = $temp; }
if ($data->{'row'}->[0]) {
my $count = 0;
while($data->{'row'}->[$count]) {
if (ref $data->{'row'}->[$count] eq "HASH") {
print $data->{'row'}->[$count]->{'col1'}, ",";
print $data->{'row'}->[$count]->{'col2'}, "\n"; }
$count ++; }
} }


[b]使用XML::SimpleObject[/b]
xml

<?xml version="1.0"?>
<files>
<file type="symlink">
<name>/etc/dosemu.conf</name>
<dest>dosemu.conf-drdos703.eval</dest>
</file>
<file>
<name>/etc/passwd</name>
<bytes>948</bytes>
</file>
</files>



use XML::Parser;
use XML::SimpleObject;

my $file = 'c:/file.xml';

my $parser = XML::Parser->new(ErrorContext => 2, Style => "Tree");
my $xmlobj = XML::SimpleObject->new( $parser->parsefile($file) );

print "Files: \n";
foreach my $element ($xmlobj->child("files")->children("file"))
{
print " filename: " . $element->child("name")->value . "\n";
if ($element->attribute("type"))
{
print " type: " . $element->attribute("type") . "\n";
}else{
print " bytes: " . $element->child("bytes")->value . "\n";
}

}


[b]生成xml[/b]
use XML::Writer;
use IO::File;
my $output = new IO::File(">output.xml");
my $writer = new XML::Writer(OUTPUT => $output);
#my $writer = XML::Writer->new();
$writer->startTag("greeting",
"class" => "simple");
$writer->characters("Hello, world!");
$writer->endTag("greeting");
$writer->end();
$output->close();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值