0
我使用xml文档在.NET中快速构建XmlDocument。然后我用Transform()方法XslCompiledTransform转换它。在.NET中,如何使用BOM编写UTF-16 XMLDocument字符串
Transform()方法抛出异常,因为在流中找到了编码的无效字符。当我借助Visual Studio中的TextVisualizer将字符串复制/粘贴到Altova XmlSpy中时,它找不到编码问题。
我试着在文档中添加一个UTF-16头文件,使其呈现为UTF-16格式,并从导致它产生的文本中调用Transform来抱怨BOM。以下是我使用的代码的简化版本。
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());
}
我应该做些什么来添加BOM或获得XslCompiledTransform.Transform不关心BOM?