加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何解析XML并在Perl中创建树结构

发布时间:2020-12-16 22:42:00 所属栏目:百科 来源:网络整理
导读:我正在使用 XML::Simple 解析XML文件.有没有办法从XML获取树形式?如果是这样,请通过示例解释或建议CPAN包. 我想知道我必须在列后处理哪个标签,依此类推. 标签没有序列.列标记可以多次出现在Table或display_name之后. Tab column Table column display_name
我正在使用 XML::Simple解析XML文件.有没有办法从XML获取树形式?如果是这样,请通过示例解释或建议CPAN包.

我想知道我必须在列后处理哪个标签,依此类推.

标签没有序列.列标记可以多次出现在Table或display_name之后.

Tab
    column
    Table
        column
    display_name
    column
    display_name

XML:

<Tab>
    <column>
        <display_name>xyz</display_name>
        <display_name>pqr</display_name>
    </column>
    <Table>
        <column><display_name>Department</display_name></column>
    </Table>
    <display_name>abc</display_name>
    <column>pwd</column>
    <display_name>jack</display_name>
</Tab>

输出XML :: Simple:

$VAR1 = {
  'Table' => {
    'column' => {
      'display_name' => 'Department'
    }
  },'display_name' => [
    'abc','jack'
  ],'column' => [
    {
      'display_name' => [
        'xyz','pqr'
      ]
    },'pwd'
  ]
};

预期的o / p:

$VAR1 = {
  'column' => {
    'display_name' => [
      'xyz','pqr'
    ]
  }
  'Table' => {
    'column' => {
      'display_name' => 'Department'
    }
  },'display_name' => 'abc','column' => 'pwd','display_name' =>'jack'
};

我知道具有相同键的哈希是不可能的.请建议一种方法,我可以保持标签序列,并将能够打印它们.

解决方法

XML :: LibXML创建一个没有信息丢失的树.

use XML::LibXML qw( );
my $parser = XML::LibXML->new();
my $tree = $parser->parse_file($qfn);

您可以从那里生成您指定的输出. (我不知道你为什么要这样做,因为你想输出的Perl代码如果运行就会丢失数据.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读