Je construis un XmlDocument à la volée dans .NET avec un document xml. Je transforme ensuite cela avec la méthode Transform() d'un XslCompiledTransform.Dans .NET, comment écrire un XMLDocument UTF-16 dans une chaîne avec une nomenclature
La méthode Transform() a émis une exception car un caractère non valide pour le codage a été trouvé dans le flux. Lorsque je copier/coller la chaîne à l'aide de TextVisualizer dans Visual Studio dans Altova XmlSpy, il ne trouve pas un problème d'encodage.
J'ai essayé d'ajouter un en-tête UTF-16 au document pour le rendre en UTF-16 et en appelant Transform à partir du texte résultant conduit à se plaindre d'une nomenclature. Voici une version simplifiée du code que j'ai utilisé.
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);
Ce que je vous écris par conséquent à une chaîne comme ceci:
StringBuilder sbXml = new StringBuilder();
using (XmlWriter wtr = XmlWriter.Create(sbXml))
{
xml.WriteTo(wtr);
// More code that calls sbXml.ToString());
}
Que dois-je faire pour ajouter à fichait BOM ou se XslCompiledTransform.Transform sur le bom?