xmlドキュメントで.NETでXmlDocumentをオンザフライで構築しています。私はXslCompiledTransformのTransform()メソッドで変換します。.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を気にしないために得るために何をしなければなりませんか?