web-dev-qa-db-fra.com

comment sauvegarder xmldocument dans un flux

J'ai déjà écrit du code pour analyser mon fichier xml avec un XmlReader afin que je ne veuille pas le réécrire. J'ai maintenant ajouté le cryptage au programme. J'ai des fonctions encrypt () et decrypt () qui prennent un document XML et l'algorithme de chiffrement. J'ai une fonction qui utilise un lecteur XML pour analyser le fichier, mais maintenant avec le document XML, je ne suis pas sûr de savoir comment créer le xmlreader.

La question est de savoir comment enregistrer mon document XML dans un flux. Je suis sûr que c'est simple mais je ne connais rien aux ruisseaux.

XmlDocument doc = new XmlDocument();
        doc.PreserveWhitespace = true;
        doc.Load(filep);
        Decrypt(doc, key);

        Stream tempStream = null;
        doc.Save(tempStream);   //  <--- the problem is here I think

        using (XmlReader reader = XmlReader.Create(tempStream))  
        {
            while (reader.Read())
            { parsing code....... } }
12
user1711383

Vous pouvez essayer avec MemoryStream class

XmlDocument xmlDoc = new XmlDocument( ); 
MemoryStream xmlStream = new MemoryStream( );
xmlDoc.Save( xmlStream );

xmlStream.Flush();//Adjust this if you want read your data 
xmlStream.Position = 0;

//Define here your reading
38
Aghilas Yakoub

Écrire dans un fichier:

 static void Main(string[] args)
    {
        XmlDocument doc = new XmlDocument();
        doc.LoadXml("<FTPSessionOptionInfo><HostName>ftp.badboymedia.ca</HostName></FTPSessionOptionInfo>");

        using (StreamWriter fs = new StreamWriter("test.xml"))
        {
            fs.Write(doc.InnerXml);
        }
    }
1
PReghe

Je me rends compte que c’est une vieille question, mais j’ai pensé qu’il valait la peine d’ajouter une méthode tirée de ce Nice little blog post . Cela élimine certaines méthodes moins performantes.

private static XDocument DocumentToXDocumentReader(XmlDocument doc)
{
    return XDocument.Load(new XmlNodeReader(doc));
}
0
Martin_ATS

essaye ça

    XmlDocument document= new XmlDocument( );
    string pathTmp = "d:\somepath";
    using( FileStream fs = new FileStream( pathTmp, FileMode.CreateNew ))
    {
      document.Save(pathTmp);
      fs.Flush();
    }
0
Kosmas