使用 foreach 循环的 DataGridView 到 XDocument 异常错误
DataGridView to XDocument Exception Error using foreach loop
我有以下代码可以正确地创建包含第一条记录的 xml 文档。但只是因为我在添加第一条记录(行)后包含了一个中断
xdoc.Add(line);
break;
如果我让循环 运行(为了添加所有记录)我得到异常
错误:{"This operation would create an incorrectly structured document."}
在这里进行了搜索并找到了很多示例,但我无法完全理解它们以及它们与我正在尝试做的事情之间的关系。
XDocument xdoc = new XDocument();
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
XElement line = new XElement("line");
XElement itemid = new XElement("field", dr.Cells["Item ID"].Value.ToString());
itemid.Add(new XAttribute("name", "item_id"));
line.Add(itemid);
XElement itemname = new XElement("field", dr.Cells["Item Name"].Value.ToString());
itemname.Add(new XAttribute("name", "item_name"));
line.Add(itemname);
XElement cost = new XElement("field", dr.Cells["Cost"].Value.ToString());
cost.Add(new XAttribute("name", "cost"));
line.Add(cost);
xdoc.Add(line);
break;
}
xdoc.Save(@"C:\xmltest\test3.xml");
它在我打断时添加了第一行,为什么在我删除打断时不添加其余的行?
好吧,任何 XML 文档都需要一些根元素,因此请将 XDocument xdoc = new XDocument();
更改为例如XDocument xdoc = new XDocument(new XElement("root"));
然后添加到根,即把xdoc.Add(line);
改成xdoc.Root.Add(line);
.
我有以下代码可以正确地创建包含第一条记录的 xml 文档。但只是因为我在添加第一条记录(行)后包含了一个中断
xdoc.Add(line);
break;
如果我让循环 运行(为了添加所有记录)我得到异常
错误:{"This operation would create an incorrectly structured document."}
在这里进行了搜索并找到了很多示例,但我无法完全理解它们以及它们与我正在尝试做的事情之间的关系。
XDocument xdoc = new XDocument();
foreach (DataGridViewRow dr in dataGridView1.Rows)
{
XElement line = new XElement("line");
XElement itemid = new XElement("field", dr.Cells["Item ID"].Value.ToString());
itemid.Add(new XAttribute("name", "item_id"));
line.Add(itemid);
XElement itemname = new XElement("field", dr.Cells["Item Name"].Value.ToString());
itemname.Add(new XAttribute("name", "item_name"));
line.Add(itemname);
XElement cost = new XElement("field", dr.Cells["Cost"].Value.ToString());
cost.Add(new XAttribute("name", "cost"));
line.Add(cost);
xdoc.Add(line);
break;
}
xdoc.Save(@"C:\xmltest\test3.xml");
它在我打断时添加了第一行,为什么在我删除打断时不添加其余的行?
好吧,任何 XML 文档都需要一些根元素,因此请将 XDocument xdoc = new XDocument();
更改为例如XDocument xdoc = new XDocument(new XElement("root"));
然后添加到根,即把xdoc.Add(line);
改成xdoc.Root.Add(line);
.