Search code examples
c#xmlxmlreaderxmlwriter

How to create an XML file from a XmlReader?


How do you write an XML file from an System.Xml.XmlReader?

I thought this would be a simple question but whenever I search I seem to be ending up with reading the file to a reader or writing node by node.

The XmlReader object conveys xml that was stored in a database and just needs to come out of the database to a file. Is there any easy way to do this?

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

        dataCmd.CommandTimeout = 60000;

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

Solution

  • You need to create an XmlWriter and call its WriteNode method.

    For example:

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