【发布时间】:2017-09-03 05:24:06
【问题描述】:
我正在使用XML::Simple 解析一个 XML 文件。有没有办法从 XML 中获取树形?如果是这样,请举例说明或建议一个 CPAN 包。
我想知道在column等之后我必须处理哪个标签。
标签没有顺序。 column 标签可以多次出现在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'
};
我知道具有相同键的哈希是不可能的。请提出一种我可以保持标签顺序并能够打印它们的方法。
【问题讨论】:
-
为什么要重新发明轮子?你有理由不使用
Dumper吗? -
@Steve: 不能使用 dumper,因为从上面的 xml 打印 html 代码需要遍历。
-
@Ganesh 您永远不会在 Perl 中获得预期的输出。您有一个密钥冲突,因为您有两次
display_name和column作为密钥。 XML::Simple 给你的是正确的。 -
您的问题不清楚。请显示完整的输入 XML 和您想要的输出。