【发布时间】:2010-11-15 15:11:33
【问题描述】:
我正在.NET 中使用 xml 文档即时构建XmlDocument。然后我使用XslCompiledTransform 的Transform() 方法对其进行转换。
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?
【问题讨论】:
标签: .net xml xmldocument byte-order-mark xslcompiledtransform