2010-01-07 53 views
0

我有一個包含一些XML的流。 XML可以使用二進制XML寫入器(例如從XmlDictionaryWriter.CreateBinaryWriter獲得)或非二進制XML寫入器(如在XmlWriter.Create中)編碼。給定一個XML流如何知道它是二進制XML還是非二進制XML流?

我想知道哪個讀者可以使用 - XmlDictionaryReader.CreateBinaryReaderXmlReader.Create。當然,我可以假定XML是非二進制的,然後嘗試並回退到二進制。這就是我今天所做的。但我不喜歡這種方法。我想知道是否有API,它可以引導我讀者選擇的第一位。

謝謝。

回答

0

你可以檢查數據(或例如前100個字符),看看是否有任何無效XML characters,如果你沒有找到任何然後使用當前的解決方案 - 嘗試XmlReader.Create第一,回落到XmlDictionaryReader.CreateBinaryReader

+0

不好。第一個字節是64,第二個是16.該流是二進制XML。 – mark 2010-01-07 11:42:49

+0

我添加了一個更正確的解決方案:如果沒有無效的XML字符,那麼它很可能是非二進制XML。 – 2010-01-07 12:18:05