zyh3033 发表于 2018-8-31 09:15:54

perl XML::Parser

  使用Tree Style来解析xml文件
  操作文件:
  # cat sample1
  
  
  Partly Cloudy
  
  12
  6
  
  XML::Parser中的Tree Style将xml文件内容转化为perl的数据结构如下:
  # cat ch.pl
  #!/usr/bin/perl -w
  use strict;
  use XML::Parser;
  use Data::Dumper;
  my $file = "sample1";
  my $p = XML::Parser->new(Style => 'Tree');
  my $doc = $p->parsefile($file);
  print Dumper($doc);
  # perl ch.pl
  $VAR1 = [
  'FORECAST',
  [
  {},
  0,
  '
  ',
  'OUTLOOK',
  [
  {},
  0,
  '
  Partly Cloudy
  '
  ],
  0,
  '
  ',
  'TEMPERATURE',
  [
  {
  'TYPE' => 'MAX',
  'DEGREES' => 'C'
  },
  0,
  '12'
  ],
  0,
  '
  ',
  'TEMPERATURE',
  [
  {
  'TYPE' => 'MIN',
  'DEGREES' => 'C'
  },
  0,
  '6'
  ],
  0,
  '
  '
  ]
  ];
  #
  转换原理参照:http://search.cpan.org/~msergeant/XML-Parser-2.36/Parser.pm中的Style的Tree。
Tree
  Parse will return a parse tree for the document. Each node in the tree takes the form of a tag, content pair. Text nodes are represented with a pseudo-tag of "0" and the string that is their content. For elements, the content is an array reference. The first item in the array is a (possibly empty) hash reference containing attributes. The remainder of the array is a sequence of tag-content pairs representing the content of the element.
  基本上就是 element [匿名数组]一次类推下去,涉及到嵌套。
  脚本运行结果如下:
  # perl sample2.pl sample1
  Outlook: Partly Cloudy
  MAX:12 C
  MIN:6 C

页: [1]
查看完整版本: perl XML::Parser