0

如何将无效xml的(即某些未引用的属性)“转换”为有效的 xml,即将所有a=b属性转换为a="b".

例如对于这样的 xml 文件:

<Top>
<Name name='name' />
<Group number=1>
<Member name='name1' test='test1' l=100/>
</Group>
</Top>

期望输出将是:

<Top>
<Name name='name' />
<Group number="1">
<Member name='name1' test='test1' l="100"/>
</Group>
</Top>"

我知道tdom包,它有-html选项。但是我应该使用的包是dom,必须引用 xml 文件属性。

4

1 回答 1

2

这不是一个有效的 XML 文档,所以我们不能为此使用像 tDOM 这样的 XML 处理器。相反,我们必须用正则表达式做一些讨厌的事情,并希望得到最好的结果:

set inputDocument "…"

regsub -all {(\w+)=(\w+)} $inputDocument {\1="\2"} outputDocument

puts $outputDocument

老实说,这不是很好,但它会在你的情况下做正确的事情。可以投入更多精力并确保转换仅应用于元素内而不是实体,但如果它对您的真实数据足够好,那么它就足够了。(由于输入文档不是XML,因此正确进行此类转换非常困难;谁知道一般情况下还有什么其他讨厌的东西?)

于 2013-07-31T14:49:39.750 回答