Как создать файл XML из XmlReader?

Как написать файл XML из System.Xml.XmlReader?

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

Объект XmlReader передает xml, который был сохранен в базе данных и должен просто выйти из базы данных в файл. Есть ли простой способ сделать это?

        SqlCommand dataCmd = new SqlCommand(sqlText, Conn);
        System.Xml.XmlReader dataReader = null;

        dataCmd.CommandTimeout = 60000;

        Conn.Open();
        dataReader = dataCmd.ExecuteXmlReader();
        dataReader.Read();

person Andy    schedule 21.10.2010    source источник


Ответы (2)


Вам нужно создать XmlWriter и вызвать его метод WriteNode.

Например:

using (conn)
using (SqlCommand dataCmd = new SqlCommand(sqlText, Conn)) {
    dataCmd.CommandTimeout = 60000;

    Conn.Open();
    using (XmlReader dataReader = dataCmd.ExecuteXmlReader())
    using (XmlWriter writer = XmlWriter.Create(File.OpenWrite(...)) {
        writer.WriteNode(dataReader, true);
    }
}
person SLaks    schedule 21.10.2010
comment
у меня был один, использующий более высокий уровень, но эта очистка сделала код еще лучше. Спасибо. - person Andy; 21.10.2010
comment
Для гуглеров. Файл не закрывается, если вы не используете var settings = new XmlWriterSettings{CloseOutput = true}; XmlWriter.Create(File.OpenWrite(...),параметры) - person Archlight; 29.08.2013

Самый простой способ — передать его в XmlWriter, используя такой метод:

public void WriteOutXml(XmlReader xmlReader, string fileName)
{
    var writer = XmlWriter.Create(fileName);
    writer.WriteNode(xmlReader, true);
}
person Rob Levine    schedule 21.10.2010