2013-07-31 46 views
0

如何將非有效的xml(即某些未引用的屬性)「轉換」爲有效的xml,即將所有a=b屬性轉換爲a="b"xml在tcl中的報價屬性值

例如,對於這樣的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包,裏面有選項。但是我應該使用的包是dom,必須引用xml文件屬性。

回答

2

這不是一個有效的XML文檔,所以我們不能使用像tDOM這樣的XML處理器。相反,我們必須爲最好做一些討厭用正則表達式和希望:

set inputDocument "…" 

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

puts $outputDocument 

這是不太好是誠實的,但它會做正確的事情,你的情況。我們可以付出更多的努力,並確保轉換隻適用於元素,而不適用於機構,但如果它足夠適合您的真實數據,那就足夠了。 (獲得這種轉變右邊是相當困難,因爲在輸入文檔是 XML;誰知道還有什麼其他的髒東西可以內埋伏一般)