Подтвердить что ты не робот

Как сохранить xmldocument в поток

Я уже написал код для анализа моего xml файла с помощью XmlReader, поэтому я не хочу его переписывать. Теперь я добавил шифрование в программу. У меня есть функции encrypt() и decrypt(), которые берут XML-документ и алгоритм шифрования. У меня есть функция, которая использует xml-ридер для синтаксического анализа файла, но теперь с XML-документом я не уверен, как создать xmlreader.

Вопрос заключается в том, как сохранить мой XML-документ в поток. Я уверен, что это просто, но я ничего не знаю о потоках.

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....... } }
4b9b3361

Ответ 1

Вы можете попробовать с 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

Ответ 2

Запись в файл:

 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);
        }
    }

Ответ 3

попробуйте это

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

Ответ 4

Я понимаю, что это старый вопрос, но подумал, что стоит добавить метод из этого приятного небольшого сообщения в блоге. Это снижает некоторые менее эффективные методы.

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