+ -
当前位置:首页 → 问答吧 → 问一个perl解析xml的问题。

问一个perl解析xml的问题。

时间:2010-10-28

来源:互联网

大家好,

我使用perl解析一个非常简单的xml字符串。
xml字符串如下:
  1. <?xml version="1.0"?>
  2. <results fid="4769">
  3. <branch>edream2.1-feature-interactive-timescape-widget</branch>
  4. <branch>edream2.1-feature-interactive-timescape-widget</branch>
  5. </results>
复制代码
解析代码如下:
  1. use XML::Simple;
  2. use Data::Dumper;

  3. my %Feature_Git_Branch_List;
  4. #        key:fp_id
  5. #        value array |branch_name1|branch_name2|....

  6. my $xml = new XML::Simple;
  7. my $data = $xml->XMLin($res->content);
  8.                 # print output
  9.                 my %VAR = Dumper($data);
  10.                 print DB_LOG_FILE %VAR;
  11.                 my @branch_array = $VAR{"branch"};
  12.                 print DB_LOG_FILE @branch_array;
  13.                 $Feature_Git_Branch_List{$key} = \@branch_array;
复制代码
哈希表VAR打印出来如下:
$VAR1 = {
          'fid' => '4769',
          'branch' => [
                        'edream2.1-feature-interactive-timescape-widget',
                        'edream2.1-feature-interactive-timescape-widget'
                      ]
        };
但是怎样能取到branch数组的值呢,
  1. my @branch_array = $VAR{"branch"};
  2.                 print DB_LOG_FILE @branch_array;
  3.                 $Feature_Git_Branch_List{$key} = \@branch_array;
复制代码
这几行好像不太管用。

谢谢

作者: hepower   发布时间: 2010-10-28

@array = @{$data->{branch}}

作者: yybmsrs   发布时间: 2010-10-28



QUOTE:
@array = @{$data->{branch}}
yybmsrs 发表于 2010-10-28 15:41




    你好,谢谢回复!你给的代码可行,我想问问
@{$data->{branch}};
这行是什么意思
$data难道是个哈希表么?
如果是哈希表,应该用$data{key}来取元素啊?
另外,branch这个key有可能有,有可能没有,
key存在的情况下
对应的value也许是一个值,也许是一个数组,请问该怎么写呢?

作者: hepower   发布时间: 2010-10-28

作者: zhlong8   发布时间: 2010-10-28

回复 hepower
  1. my $xml = new XML::Simple;
  2. my $data = $xml->XMLin("1.xml");

  3. print Dumper($data);

  4. if(exists $data->{branch})
  5. {
  6.         my @array = ref($data->{branch}) ? @{$data->{branch}} : ($data->{branch});
  7.         print @array
  8. }
复制代码
具体可以查看perl reference的文档

作者: yybmsrs   发布时间: 2010-10-28



QUOTE:
回复  hepower 具体可以查看perl reference的文档
yybmsrs 发表于 2010-10-28 16:16




    好的,谢谢,有时间我好好看看,perl太灵活了。。。。

作者: hepower   发布时间: 2010-10-28

热门下载

更多