如何从 XmlReader 创建一个 XML 文件?

13

如何从 System.Xml.XmlReader 中编写 XML 文件?

我认为这应该是一个简单的问题,但每当我搜索时,似乎都会读取文件到阅读器或逐个节点地写入。

XmlReader 对象传达了存储在数据库中的 xml,只需将其从数据库导出到文件即可。是否有任何简单的方法来完成这个任务?

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

        dataCmd.CommandTimeout = 60000;

        Conn.Open();
        dataReader = dataCmd.ExecuteXmlReader();
        dataReader.Read();
2个回答

27
你需要创建一个 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);
    }
}

我之前有一个使用更高级别的版本,但这次的清理使代码变得更好。谢谢。 - Andy
3
如果您不使用以下代码:var settings = new XmlWriterSettings{CloseOutput = true};XmlWriter.Create(File.OpenWrite(...),settings)文件将不会被关闭。 - Archlight

9
最简单的方法是将它传递给XmlWriter,使用这样的方法:
public void WriteOutXml(XmlReader xmlReader, string fileName)
{
    var writer = XmlWriter.Create(fileName);
    writer.WriteNode(xmlReader, true);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接