2011-05-09 20 views
2

我需要從第三方源讀取一些XML。他們的文本字段都不包含在CDATA標記中,並且不能保證這些值不會包含無效字符 - 我特別想到&符號。他們也不會添加CDATA標籤,因爲這可能會破壞他們現有的客戶端。有解析器可以解決這個問題嗎?用於.NET的解析器將處理無效的XML

+1

如果不是XML,則無法使用XML解析器讀取它。你的第三方應該停止說謊他們發送XML的事實 - 顯然,他們不發送XML。 – 2011-05-09 20:43:49

+0

在使用標準XML解析器之前,如果有合理的穩健性和努力,您可以使無效的XML「有效」? – 2011-05-10 08:45:01

回答

2

假設無效字符已正確轉義,而不是逐字地包含在XML中,那麼可以通過創建一個將Normalization屬性設置爲false的XmlTextReader與.NET庫一起讀取它。請參閱http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.normalization.aspx

+0

沒有正確轉義... – joelt 2011-05-09 19:59:45

+0

(然後數據不嚴格地說XML。)我會通過函數運行流,以用適當的轉義序列替換非法字符。 – phoog 2011-05-09 23:04:07

+0

足夠接近......我想這會導致問題B/C一些字符可能已經逃脫。但我想我可以添加CDATA標籤。 – joelt 2011-05-12 19:53:57