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....... } }
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
É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);
}
}
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));
}
essaye ça
XmlDocument document= new XmlDocument( );
string pathTmp = "d:\somepath";
using( FileStream fs = new FileStream( pathTmp, FileMode.CreateNew ))
{
document.Save(pathTmp);
fs.Flush();
}