2011-01-28 65 views
3

我試圖創建一個簡單的應用程序讀取使用SAX(XmlTextReader的),從中不僅包含XML還包括其他數據如二進制斑點和文本流的XML。流的結構僅僅是基於塊的。XmlTextReader的傳遞XML文檔的末尾而不承認

當進入我的閱讀功能時,流正確定位在XML的開頭。我已經減少了問題下面的代碼示例:

string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?><Models />" + (char)0x014; 

XmlTextReader reader = new XmlTextReader(new StringReader(xml)); 
reader.MoveToContent(); 
reader.ReadStartElement("Models"); 

這幾行呼籲ReadStartElement由於在字符串末尾的量0x014時導致異常。

關於它的有趣的事情是,該代碼使用下面的輸入,而不是當運行良好:

string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?><Models></Models>" + (char)0x014; 

我不想對整個文檔閱讀,由於其大小也不想給根據需要更改輸入以保持向後兼容較舊的數據輸入。

我能第一個想到的唯一的解決方案是一個定製的流閱讀器不繼續最後的結束標記後讀,但會涉及一些重大的分析工作。

對於如何解決這個問題你有什麼想法嗎?我已經嘗試使用LINQ的XDocument,但也失敗了。

非常感謝你提前, 乾杯,

Romout

+1

順便說一句,你不應該使用`新的XmlTextReader()`。從.NET 2.0開始已經被棄用了。改爲使用`XmlWriter.Create()`。 – 2011-01-28 20:07:47

回答

0

我不知道這是不是你正在尋找相當的東西,但如果你不是叫:

reader.IsStartElement("Models");

<Models/>節點,如果它是一個開始標記或空元素標記將只被測試,並且如果名稱相匹配。讀者不會被移出它(Read()方法不會被調用)。

相關問題