2011-06-24 128 views
1

我正在解析一個不正確的xml文檔,它包含「&」,並且解析不正確,它有一個節點中有「&」。解析包含「£」的XMl

例如<abcnode>&pound;70.00-&pound;90.00</abcnode>

當我試圖讓這個節點的值,它返回「70.00-」。

我已經在這個XML無法控制的,所以我將不得不解析這個異常的XML。

我使用XmlTextReader reader = new XmlTextReader(url);從URL加載XML。

我可以用xml取代&pound;來解決我的問題,但是這個xml可能非常大,所以我不想下載文件來替換無效字符(出於性能原因)。

有沒有一種方法來解析使用XmlTextReader這個XML?

+1

我討厭挑剔,但有沒有這樣的事情「也就是沒有很好地形成一個XML文檔」。如果格式不正確,那麼它不是XML。如果存在實體「£」的定義,則該文檔是格式良好的XML;如果沒有這樣的定義,那麼它不是格式良好的,而不是XML。 –

回答

2

XmlTextReader將採取TextReader參數從閱讀,因此,您也許能夠實現繼承TextReader類,覆蓋所有ReadXXX()方法和修復無效字符的覆蓋。

編輯另外,您可以破解XML的DOCTYPE因爲它是閱讀加<!ENTITY pound "&#163;">,這應該使文檔的其餘部分良好的。將實體添加到XmlTextReader本身可能還有另一個竅門,根本不需要修改XML,但我不知道其中的一個。

0

我想知道您是否正確地說,這是格式不正確?也許它解析正確,但構建一個DOM樹,其中的實體顯式地顯示爲節點,並且您的應用程序代碼忽略實體節點?