Я создаю XmlDocument на лету в .NET с документом xml. Затем я преобразую это с помощью метода Transform () для XslCompiledTransform .
Метод Transform () вызвал исключение, поскольку в потоке был обнаружен недопустимый символ для кодировки. Когда я копирую / вставляю строку с помощью TextVisualizer в Visual Studio в Altova XmlSpy , она не находит проблемы с кодировкой.
Я попытался добавить заголовок UTF-16 к документу, чтобы он отображался как UTF-16, и вызов Transform из полученного текста привел к жалобе на спецификацию. Ниже приведена упрощенная версия кода, который я использовал.
XmlDocument document = new XmlDocument();
XmlDeclaration decl = document.CreateXmlDeclaration("1.0", "UTF-16", null);
document.AppendChild(decl);
XmlNode root = document.CreateNode(XmlNodeType.Element, "RootNode", "");
XmlNode nodeOne = document.CreateNode(XmlNodeType.Element, "FirstChild", null);
XmlNode nodeTwp = doc.CreateNode(XmlNodeType.Element, "Second Child", null);
root.AppendChild(nodeOne);
root.AppendChild(nodeTwo);
document.AppendChild(root);
Который я, следовательно, записываю в строку примерно так:
StringBuilder sbXml = new StringBuilder();
using (XmlWriter wtr = XmlWriter.Create(sbXml))
{
xml.WriteTo(wtr);
// More code that calls sbXml.ToString());
}
Что я должен сделать, чтобы добавить спецификацию или получить XslCompiledTransform.Transform, чтобы не заботиться о бомбе?