`
Tristan_S
  • 浏览: 367002 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

perl - 解析/生成xml

    博客分类:
  • perl
阅读更多
原始的方法

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 ++; }
   } }


使用XML::SimpleObject
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";
  }
  
}  


生成xml
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();

分享到:
评论

相关推荐

    perl-XML-LibXML-Common-0.13-8.i586.rar_perl xml

    这个模块是Perl与XML集成的关键组件,尤其在需要解析、操作或生成XML数据的场景中非常有用。它为Perl开发者提供了一种高效且功能强大的方式来处理XML内容,从而能够实现不同语言之间的数据转换。 XML(eXtensible ...

    XML-Simple-2.18.tar.gz

    1. **解析XML文档**:XML-Simple能够将XML字符串或文件解析成Perl的数据结构。例如,一个XML文档可以被解析成一个哈希,其中XML元素成为哈希键,元素内容成为对应的值。 2. **生成XML文档**:同样,Perl的数据结构...

    perl-Net-SAML2-master.zip-Net::SAML2 - SAML bindings and proto

    Net::SAML2库提供了对SAML XML文档的解析和生成能力,以及与SAML通信相关的各种操作。以下是一些关键知识点: 1. **SAML基本概念**: - **SAML主体(Subject)**:通常代表用户,是身份验证的对象。 - **断言...

    perl读写xml文件

    这篇博客文章“perl读写xml文件”很可能是关于如何在Perl中操作XML文件,包括解析XML内容、提取数据、修改数据以及生成新的XML文件。 Perl提供了多个模块来处理XML,最常用的是XML::Simple和XML::LibXML。XML::...

    XML-Simple-2.20

    XML-Simple是Perl编程语言中一个非常流行的模块,主要用于解析和生成XML文档。这个压缩包“XML-Simple-2.20”包含了该模块的2.20版本,这是一个用于简化处理XML数据的库。Perl开发者经常使用XML-Simple来处理XML数据...

    perl读取EXCEL文件输出到XML

    Perl 读取 EXCEL 文件...本文介绍了使用 Perl 读取 EXCEL 文件并输出到 XML 文件的方法,包括 Perl 语言基础、EXCEL 文件读取、XML 文件生成和示例代码。该方法可以实现数据的跨平台共享和交换,具有广泛的应用前景。

    XML-SAX:用于XML的简单API,包括纯Perl解析器

    XML-SAX库允许Perl开发者以面向对象的方式与SAX解析器交互,从而能够高效地解析和处理XML数据。 XML-SAX库主要包含以下组件: 1. **解析器**:这是核心部分,负责读取XML文档并触发一系列事件。当解析器遇到XML...

    Grammar-Kit:IntelliJ IDEA的语法文件支持和parserPSI生成

    Cmd-Alt-P)调整语法生成解析器/ ElementTypes / PSI类(Ctrl-Shift-G / Cmd-Shift-G) 生成lexer * .flex文件,然后运行JFlex generator(均通过上下文菜单) 实现ParserDefinition并将相应的注册添加到plugin.xml ...

    perl-HTML-Tagset

    4. **标签解析与生成**:通过对HTML源码进行解析,可以提取出其中的标签信息,然后根据需要生成新的HTML代码。 在实际项目中,`perl-HTML-Tagset`常用于以下场景: - **网页爬虫**:提取网页内容时,识别和处理...

    Parse::Perl-开源

    `PPI` 使用了 SAX(Simple API for XML)模型,这是一种事件驱动的解析方式,适用于处理大量数据或需要低内存占用的场景。通过 `PPI`,开发者可以编写程序来分析和修改 Perl 代码,而无需实际运行这些代码。 #### ...

    json-c-0.7.rar_c json_json c_json 数据 格式_json-c vc_xml-json-c

    同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, ...

    perl 对 xml的详细操作

    XML::Generator 可以在Perl内部生成XML;XML::Dumper 用于将Perl数据结构序列化和反序列化为XML;XML::Writer 则是一个助手模块,帮助编写符合规范的XML文档。 对于XML相关的网络协议和标准,Perl 也提供了相应的...

    linux-cgi.rar_CGI js_CGI linux_Linux下cgi开发_linux http cgi_linux

    在这个例子中,我们关注的是JavaScript CGI,它允许在客户端使用JavaScript生成动态内容,而无需服务器端的额外解析。 要开始一个CGI项目,你需要创建一个可执行文件,该文件将作为CGI程序。在Linux中,你可以使用...

    perl 模块(spreadsheet、XML::Simple、DBB::mysql等模块)

    2. XML::Simple:这是一个用于XML处理的Perl模块,正如其名,它提供了一种简单的方式来解析和生成XML文档。XML::Simple将复杂的XML结构转换为易于理解和操作的Perl数据结构,如哈希和数组。尽管它的名字中带有“简单...

    perl(windows环境)

    Perl的强大在于其丰富的模块库CPAN(Comprehensive Perl Archive Network),在这里可以找到数千个预先编写的模块,覆盖了网络通信、数据库接口、XML处理、图形生成等各种功能。例如,如果你的服务器需要处理HTTP...

    Perl XML-开源

    这个项目致力于简化XML数据的解析、生成、操作以及与其他XML技术(如XPath、XSLT、SOAP)的集成。Perl XML库的广泛性使得开发人员能够灵活地处理XML文档,无论是简单的数据交换还是复杂的XML应用。 在Perl XML项目...

    50本Perl经典电子书打包下载.docx

    Perl-XML.chm:介绍了 Perl 语言的 XML 处理技术,包括 XML 解析、生成和处理等。 高级技术篇 Advanced.Perl.Programming.1st.Edition.pdf:提供了 Perl 语言的高级编程技术,包括对象编程、网络编程和多线程...

    perl-Astro-FITS-HdrTrans:Perl模块,用于执行从FITS到通用和反向的天文元数据头转换

    Perl-Astro-FITS-HdrTrans 模块允许用户轻松地解析、修改和创建FITS文件的头部记录,这些记录通常以键值对的形式存在。 该模块可能包含以下核心功能: 1. **FITS头读取**:能够读取FITS文件的HDR(Header)部分,...

    Web Development Toolkit for Perl-开源

    这个工具包提供了XML的加载和保存功能,使得Perl程序能够方便地解析、操作和生成XML文档,增强了Perl与XML数据的集成能力。 3. **HTTP Cookie管理**:HTTP cookie是Web应用中常用的一种机制,用于跟踪用户状态和...

    PERL perl_add_ons 3

    在"perl_add_ons 3"中,我们可能找到了处理XML数据的模块,如`XML::Simple`,用于解析和生成XML文档: ```perl use XML::Simple; my $data = { key1 =&gt; 'value1', key2 =&gt; [ 'value2', 'value3' ] }; my $xml = ...

Global site tag (gtag.js) - Google Analytics