Как создать XML со специальной кодировкой с помощью XSLT и XMLWRITER

Я пытаюсь применить таблицу стилей XSL к исходному XML-файлу и записать вывод в целевой XML-файл. XSL удаляет комментарии xml, присутствующие внутри исходного xml.

Целевой XML-файл имеет кодировку UTF-16 в заголовке.

Но все же я хочу, чтобы выходной xml был в кодировке utf-8. Код, который я использовал,

            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());

Я попытался установить для параметра записи xml значение UTF-8, но это не работает.


person Defendore    schedule 15.09.2010    source источник


Ответы (1)


Поскольку вы пишете в файл, почему бы просто не использовать:

using (XmlReader xReader = XmlReader.Create("Source.xml"))
using (XmlWriter xWriter = XmlWriter.Create("Target.xml", xwrSettings)) {
    xslt.Transform(xReader, xWriter);
}
// your file is now written
person Marc Gravell    schedule 15.09.2010
comment
Спасибо за ответ. Да, вы правы, если я напрямую пишу в файл, он работает. но мне нужен этот объект stringbuilder для дальнейшей обработки содержимого xml, а затем я запишу в файл. Поскольку я использую этот объект stringbuilder, он записывает его как UTF-16. - person Defendore; 15.09.2010
comment
@padman - вы можете создать подкласс StringWriter и переопределить кодировку - так и должно быть. - person Marc Gravell; 15.09.2010