tcl中的xml引用属性值

时间:2013-07-31 13:33:06

标签: tcl

如何将非有效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文件属性。

1 个答案:

答案 0 :(得分:2)

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

set inputDocument "…"

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

puts $outputDocument

说实话这不是很好,但在你的情况下它会做正确的事。可以投入更多精力并确保转换仅应用于元素内,而不是应用于实体中,但如果它对您的实际数据足够好,那么它就足够了。 (正确地进行这样的转换是非常困难的,因为输入文档不是 XML;谁知道其他什么东西可能在等待内部?)