`
Tristan_S
  • 浏览: 366816 次
  • 性别: 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();

分享到:
评论

相关推荐

    XML-Simple-2.18.tar.gz

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

    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`常用于以下场景: - **网页爬虫**:提取网页内容时,识别和处理...

    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 也提供了相应的...

    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...

    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 = ...

    CPAN上处理xml的两个模块

    `XML::Simple`是Perl中一个非常流行的模块,它提供了一个简洁的接口来解析和生成XML。尽管其名字中带有“简单”,但这个模块实际上并不总是那么简单,因为它尝试将复杂的XML结构转换为简单的Perl数据结构,如哈希...

    Html2perl-开源

    这意味着你可以使用它来转换任何ASCII编码的文本,比如XML或者简单的文本格式。 3. **控制台应用**:作为一个命令行工具,Html2perl易于集成到各种工作流程中,如构建系统或者自动化任务中。只需在终端中运行相应...

    Config-Perl:Perl扩展以解析用Perl编写的配置文件

    "Config-Perl"是一个Perl模块,专门设计用来解析那些用Perl语法编写而非传统ASCII格式(如INI或XML)的配置文件。这个模块允许开发者使用Perl的全部语法灵活性来定义配置结构,而不仅仅是简单的键值对。 Config-...

    txt2perl-开源

    2. **数据提取**:当需要从大量文本数据中提取特定模式或结构时,`txt2perl`能帮助生成解析和提取规则的Perl函数。 3. **日志分析**:在处理系统日志或其他形式的记录数据时,`txt2perl`生成的子例程可以方便地分析...

    使用Perl进行Web / HTTP自动化

    此外,“text”标签可能指的是处理纯文本数据,这在Perl中非常常见,因为Perl具有强大的文本处理能力,可以方便地解析HTML、XML或CSV等格式的数据。 “Web-HTTP-Automation-with-Perl.pdf”可能是课程资料或教程...

Global site tag (gtag.js) - Google Analytics