Domanda

Sto cercando di applicare un foglio di stile XSL su un XML di origine e scrivere l'output in un file di destinazione xml. Il xsl rimuove il commenti XML presente all'interno del XML di origine.

Il file XML di destinazione ha codifica UTF-16 nell'intestazione.

Ma ancora voglio l'xml di output per essere codifica UTF-8. Il codice che ho usato è

            XmlWriterSettings xwrSettings = new XmlWriterSettings();
            **xwrSettings.Encoding = Encoding.UTF8;**

            XslCompiledTransform xslt = new XslCompiledTransform();
            xslt.Load("sample.xsl");
            StringBuilder sb = new StringBuilder();
            XmlReader xReader = XmlReader.Create("Source.xml");
            XmlWriter xWriter = XmlWriter.Create(sb, xwrSettings);                
            xslt.Transform(xReader, xWriter);
            File.WriteAllText("Target.xml",sb.ToString());

Ho cercato di impostare l'impostazione xml scrittore a essere di UTF-8, ma non funziona.

È stato utile?

Soluzione

Dal momento che si sta scrivendo in un file, perché non basta usare:

using (XmlReader xReader = XmlReader.Create("Source.xml"))
using (XmlWriter xWriter = XmlWriter.Create("Target.xml", xwrSettings)) {
    xslt.Transform(xReader, xWriter);
}
// your file is now written
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top