2010-11-09 78 views
2

我們有一箇舊的遺留系統,其中一個組件在VB6中寫入。一種方法返回一個字符串,它是xml數據。 XML數據與MSXML3.DLL MSXML2.DOMDocument創建和財產xml返回文檔中的數據:http://msdn.microsoft.com/en-us/library/ms755989(v=VS.85).aspxMSXML2.DOMDocument.xml給我格式錯誤的xml

然而,XmlDocument的一些數據是從數據庫中一個字段是一個散列密碼字符串。設置該數據爲元素的代碼:

  Set cellNode = rowNode.appendChild(xml.createElement("COL")) 
      If IsNull(rs(oField.name).Value) Then 
       cellNode.Text = "" 
      Else 
       cellNode.Text = rs(oField.name).Value 
      End If 

這讓我異常/非簡潔(wellformed)XML:

<ROWS><ROW><COL>r<í</COL></ROW></ROWS> 

是否有解決方法嗎?

+0

好奇。我沒有通過IE'ActiveXObject'使用'MSXML2.DOMDocument.3.0'獲得相同的行爲。 – bobince 2010-11-09 16:36:01

+0

也許是因爲它在VB6中,它不能正確處理Unicode? – 2010-11-09 16:49:57

+0

VB6 [對Unicode的支持不完全](http://www.i18nwithvb.com/chapters/Chapter06_en.htm),但它不應該有任何問題。 VB6字符串在內部是Unicode,當您通過COM調用MSXML2時,字符串將保持Unicode。如果您嘗試將'cellNode.Text'設置爲包含'<'但沒有重音字符的其他字符串(遵循ASCII 32-127中的字符),會發生什麼?您可以嘗試使用cellNode的其他屬性嗎? – MarkJ 2010-11-10 12:34:44

回答

0

你應該轉義unicode字符。或者把它們放入一個CDATA標籤(儘管這不是一個很好的解決方案)012wbtw <>和&也應該被轉義。