如何将非有效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文件属性。
答案 0 :(得分:2)
这不是一个有效的XML文档,所以我们不能使用像tDOM这样的XML处理器。相反,我们必须用正则表达式做一些讨厌的事情并希望最好:
set inputDocument "…"
regsub -all {(\w+)=(\w+)} $inputDocument {\1="\2"} outputDocument
puts $outputDocument
说实话这不是很好,但在你的情况下它会做正确的事。可以投入更多精力并确保转换仅应用于元素内,而不是应用于实体中,但如果它对您的实际数据足够好,那么它就足够了。 (正确地进行这样的转换是非常困难的,因为输入文档不是 XML;谁知道其他什么东西可能在等待内部?)