Я использую XsltCompiledTransform
для преобразования некоторого XML в фрагмент HTML (не полный документ HTML, просто DIV, который я включу в страницу, созданную в другом месте).
Я выполняю преобразование следующим образом:
StringBuilder output = new StringBuilder();
XmlReader rawData = BusinessObject.GetXml();
XmlWriter transformedData = XmlWriter.Create(output);
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("stylesheet.xslt");
transform.Transform(rawData, transformedData);
Response.Write(output.ToString());
Моя проблема в том, что результат преобразования всегда начинается с этой директивы XML:
<?xml version="1.0" encoding="utf-16"?>
Как мне предотвратить появление этого в моих преобразованных данных?
РЕДАКТИРОВАТЬ:
Я говорю XSLT, что не хочу, чтобы он выводил объявление xml с
<xsl:output method="html" version="4.0" omit-xml-declaration="yes"/>
но это, похоже, не влияет на директиву, появляющуюся в моем выводе.
Интересно, что и мой источник данных XML, и мое XSLT-преобразование указывают себя как UTF-8
, а не UTF-16
.
UPDATE:
UTF-16, кажется, появляется, потому что я использую строку (строитель) в качестве механизма вывода. Когда я изменяю код для использования MemoryStream
вместо StringBuilder
, моя кодировка UTF-8 сохраняется. Я предполагаю, что это как-то связано с внутренней работой типа string
и с тем, как она работает с кодированием.