Domanda

Ho visto diversi posti qui su SO su documenti XML di carico da una sorgente dati in cui i dati sono UTF-8 preambolo di Microsoft proprietario (per esempio, questo ).
Tuttavia, non riesco a trovare un elegante (e di lavoro!), Soluzione che non comporta striping fuori caratteri BOM manualmente.

Per esempio, v'è questo esempio :

byte[] b = System.IO.File.ReadAllBytes("c:\\temp_file_containing_bom.txt");
using (System.IO.MemoryStream oByteStream = new System.IO.MemoryStream(b)) {
    using (System.Xml.XmlTextReader oRD = new System.Xml.XmlTextReader(oByteStream)) {
        System.Xml.XmlDocument oDoc = new System.Xml.XmlDocument();
        oDoc.Load(oRD);
        Console.WriteLine(oDoc.OuterXml);
        Console.ReadLine();
    }
}

... ma conserva ancora gettare "dati non validi" eccezione.

Il mio problema è che ho un enorme array di byte che a volte contiene la distinta base e, a volte non è così. Ho bisogno di caricarlo in XMLDocument. E non credo che io sono colui che deve prendersi cura per i byte "helper".

È stato utile?

Soluzione

Che BOM non è più 'proprietaria'. E 'scritto nelle specifiche XML. Solo vecchia versione di Java (1.4) hanno un problema con esso. E 'piuttosto divertente se hai la tecnologia MS esplodere.

Utilizzare un flusso di input buffer per filtrare la distinta spingendo indietro il primo carattere se non è il primo carattere della sequenza BOM.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top