Как сохранить 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....... } }
Ответы
Ответ 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));
}