我正在使用 XML::Simple 解析XML文件.有没有办法从XML获取树形式?如果是这样,请通过示例解释或建议CPAN包. 我想知道我必须在列后处理哪个标签,依此类推. 标签没有序列.列标记可以多次出
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代码如果运行就会丢失数据.)