Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#编写循环数据表或数据集的XML_C#_Datatable_Writexml - Fatal编程技术网

c#编写循环数据表或数据集的XML

c#编写循环数据表或数据集的XML,c#,datatable,writexml,C#,Datatable,Writexml,我需要从数据集或数据表创建XML文件;对于数据集中的每个记录,我必须创建一个文件,代码如下: 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 (Data

我需要从数据集或数据表创建XML文件;对于数据集中的每个记录,我必须创建一个文件,代码如下:

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条记录。。。我希望每个文件只有一个记录! 我怎样才能做到?
谢谢

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

类似于(未经测试):


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

使用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();

嗨,马克,谢谢你的回答,你有示例代码吗?
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();