Vous n'avez pas vidé le xmlWriter
, il est donc possible qu'il n'ait rien écrit pour l'instant. , Vous aussi jamais terminé l'élément racine, même si elle a écrit sur
<Root>
il pas écrit la balise de fermeture. Vous essayez de le charger en tant que document complet .
Je ne sais pas à quel point un XmlWriter effectivement écrit de toute façon la partie de départ d'un élément - n'oubliez pas qu'il peut aussi avoir des attributs à écrire. Le maximum qu'il pourrait écrire avec le code que vous avez est <Root
.
Voici un programme complet qui fonctionne: (. Notez que je ne suis pas appeler WriteEndDocument
- qui semble seulement être nécessaire si vous avez encore des éléments ouverts ou attributs)
using System;
using System.IO;
using System.Text;
using System.Xml;
class Test
{
static void Main(string[] args)
{
using (MemoryStream stream = new MemoryStream())
{
XmlTextWriter xmlWriter = new XmlTextWriter(stream, Encoding.UTF8);
xmlWriter.Formatting = System.Xml.Formatting.Indented;
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Root");
xmlWriter.WriteEndElement();
xmlWriter.Flush();
XmlDocument doc = new XmlDocument();
stream.Position = 0;
doc.Load(stream);
doc.Save(Console.Out);
}
}
}
(Quelque chose de non connexe: Bien que ce ne soit pas strictement nécessaire, vous pouvez envelopper le code dans des blocs 'using' pour vos objets' MemoryStream' et 'XmlTextWriter' - ils sont tous les deux 'IDisposable'.) – stakx