【问题标题】:how to parse a simple xml file to a readable format如何将简单的 xml 文件解析为可读格式
【发布时间】:2011-04-20 04:06:41
【问题描述】:

这里是 Perl 新手。有人可以告诉我如何使用 perl 从这个 xml 文件中提取数据并格式化我需要的输出吗?我会使用 XML::Simple 还是将其作为 fh 打开并以某种方式拆分?谢谢。

使用XML::Simple 的文档对我来说似乎并不简单。

例如,我有一个看起来像这样的小 xml 文件。

test.xml

<?xml version="1.5" encoding="UTF-8"?><org.apache.Content duration="277135" count="51" numDirs="50" bytesUsed="110133451"/>

我想将 attribute="value" 对转换为像 csv 文件一样可读,: 或者我想打印出来。

例如:

duration:277135 count:51 numDirs:50 bytesUsed:110133451

【问题讨论】:

    标签: xml perl parsing xml-simple


    【解决方案1】:
    Use XML::Simple - Easy API to maintain XML (esp config files) or 
    see XML::Twig - A perl module for processing huge XML documents in tree mode.
    
    use strict;
    use warnings;
    use XML::Simple;
    use Data::Dumper;
    
    my $xml = q~<?xml version="1.5" encoding="UTF-8"?>
    <org.apache.Content duration="277135" count="51" numDirs="50" bytesUsed="110133451"/>~;
    
    print $xml,$/;
    
    my $data = XMLin($xml);
    
    print Dumper( $data );
    
    foreach my $attributes (keys %{$data}){
      print"$attributes : ${$data}{$attributes}\n";
    }
    

    输出:

    bytesUsed : 110133451
    numDirs : 50
    count : 51
    duration : 277135
    

    【讨论】:

    • 感谢您的帮助。如果内容位于单独的 xml 文件中,是否也可以将 $xml 作为文件读入?我该怎么做?
    • 是的,您只需提供 xml 文件的路径,例如 my $xml = "\path\to\test.xml";
    【解决方案2】:

    由于作者本人不建议将 XML::Simple 用于新代码...

    不鼓励在新代码中使用此模块。其他模块是 可提供更直接和一致的 接口。特别是,强烈推荐使用 XML::LibXML。

    您可能有兴趣查看https://metacpan.org/pod/XML::LibXML::Simple

    该模块是对 XML::Simple 的直接重写(由 Grant McLean 编写)以供使用 用于 XML 结构的 XML::LibXML 解析器,其中原始使用 普通的 Perl 或 SAX 解析器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2019-12-05
      • 2012-03-14
      • 1970-01-01
      相关资源
      最近更新 更多