0

我需要从数据集或数据表中创建 XML 文件;foreach 数据集中的记录我必须按照我的代码创建一个文件:

SqlDataAdapter da = new SqlDataAdapter("select top 5 * from dbo.Log", con);
DataSet ds = new DataSet();
da.Fill(ds, "Log");
DataTable dt = new DataTable("Log");
da.Fill(dt);                
foreach (DataRow row in dt.Rows)
{
row.Table.WriteXml("D:\\" + row["id"] + ".xml");
// some other code...

这创建了 5 个 XML 文件,但在数据集/数据表中找到了所有 5 条记录...我只希望每个文件都有一条记录!我该怎么做?谢谢

4

2 回答 2

0

你正在使用row.Table.WriteXml(...). 这将写入整个表,因此:所有行。据我所知,没有用于一次导出一行的内置 API;我想您可以将行克隆/添加/删除到一个相同但空的表中?

类似(未经测试):

var clone = dt.Clone(); // is empty
foreach(DataRow row in dt.Rows)
{
    clone.Rows.Clear();
    clone.ImportRow(row);
    clone.WriteXml("D:\\" + row["id"] + ".xml");
}

不过,它可能更容易使用XmlWriter

于 2018-05-04T11:38:10.027 回答
0

使用 XmlTextWriter。下面只是一个例子。您可以根据需要对其进行修改。

XmlTextWriter writer = new XmlTextWriter("D:\\" + row["id"] + ".xml", System.Text.Encoding.UTF8);
writer.WriteStartDocument(true);
writer.Formatting = Formatting.Indented;
writer.Indentation = 2;
writer.WriteStartElement("Table");
createNode("1", "Product 1", "1000", writer);
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
于 2018-05-04T11:42:16.780 回答