使用foreach循环时发生DataGridView到XDocument异常错误

本文关键字:XDocument 异常 错误 DataGridView foreach 循环 使用 | 更新日期: 2023-09-27 18:20:44

我有以下代码,它正确地创建了带有第一条记录的xml文档。但这只是因为我在添加第一个记录(行)后包含了一个中断

xdoc.Add(line);
break;

如果我让循环运行(为了添加所有记录),我会得到异常

错误:{"此操作将创建一个结构错误的文档。"}

在这里进行了搜索,发现了很多例子,但无法完全了解它们以及它们与我试图做的事情之间的关系。

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

当我断开时,它会添加第一行,为什么不在删除断开时添加其余行?

使用foreach循环时发生DataGridView到XDocument异常错误

任何XML文档都需要一些根元素,所以将XDocument xdoc = new XDocument();更改为例如XDocument xdoc = new XDocument(new XElement("root"));,然后添加到根中,即将xdoc.Add(line);更改为xdoc.Root.Add(line);