使用XML注释文本而不是半结构化数据库语言时,节点顺序非常重要。例如,在此示例中,inode可以是短语和叶子,令牌:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<inode>
<leaf id="a"/>
</inode>
<leaf id="b"/>
<inode>
<leaf id="c"/>
</inode>
<leaf id="d"/>
</root>
我习惯XML::TreePP
,但在解析这样的示例时,即使使用Tie::IxHash
,它也会创建两个列表引用$xml->{'root'}{'inode'}
和$xml->{'root'}{'leaf'}
,这意味着如果我试着再写一次我会得到这个:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<inode>
<leaf id="a" />
</inode>
<inode>
<leaf id="c" />
</inode>
<leaf id="b" />
<leaf id="d" />
</root>
是否有人知道Perl模块可以解析表示XML标记的字符串,对其进行一些修改,然后将其作为字符串写回来,一直严格遵守原始的顺序?因为它是纯粹的 - Perl并非绝对必需,尽管它是首选。