使用者工具

網站工具


tech:perl:xml_simple

XML::Simple

XML::Simple - Easy API to maintain XML (esp config files)

  • 可正常透過 perl -MCPAN -e shell 安裝
  • 執行時會出現 could not find ParserDetails.ini 訊息, 可透過以下語法解決
    perl -MXML::SAX -e "XML::SAX->add_parser(q(XML::SAX::PurePerl))->save_parsers()"
    

使用 Sample

#!/usr/bin/perl
 
use XML::Simple qw(:strict);
 
$ref = XMLin('/tmp/t.xml',
    ForceArray => 1,
    KeyAttr    => {},
);
 
$receiverlist=$ref->{receiverlist}[0];
$i=0;
foreach $receiverinfo (@{$receiverlist->{object}}) {
        $i++;
        print("$i:");
        $orgid=$receiverinfo->{orgid}[0];
        $unitid=ref($receiverinfo->{unitid}[0]) eq "HASH"?"":$receiverinfo->{unitid}[0];
        print("[$orgid$unitid]\n");
}
exit;

/tmp/t.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE g2b2c-envelope SYSTEM "envelope.dtd">
<g2b2c-envelope>
:
:
<receiverlist>
<object type="addressbook">
<orgid>341000000A</orgid>
<unitid>U000020</unitid>
<orgname>行政院研究發展考核委員會</orgname>
<note></note>
</object>
<object type="addressbook">
<orgid>313000000G</orgid>
<unitid></unitid>
<orgname>經濟部</orgname>
<note></note>
</object>
</receiverlist>
:
:
</g2b2c-envelope>

執行結果

[[email protected] tmp]# perl t1.pl
1:[341000000AU000020]
2:[313000000G]

安裝 XML::LibXML 過程出現找不到 libxml2 的問題, 但在 CentOS 內已經安裝完成 libxml2 以及 libxml2-devel 套件, 所以就放棄使用 XML::LibXML 這模組.

參考網頁

tech/perl/xml_simple.txt · 上一次變更: 2008/10/23 11:49 由 jonathan