0

所以...我有 2 个文本框和 1 个按钮。当我向这些文本框输入数据并单击按钮时,我希望它输入 xml 文件并向其添加具有属性的新元素,而无需替换它。经过大量浏览后,我设法做了一些事情来替换我的 xml 文件中的所有文本,或者我得到了一个错误,所以我决定在这里发布一个问题。

这就是我的 xml 文件的外观:

<library>
<book name="Her way" price="20"></book>
<book name="His way" price="20"></book>
</library>

我想要做的是插入:

<book name="Their way" price="22"></book>

波纹管最后一个所以它看起来像:

<library>
<book name="Her way" price="20"></book>
<book name="His way" price="20"></book>
<book name="Their way" price="22"></book>
</library>

每次我再次单击按钮时,它都会以相同的方式添加它,我会在文本框中更改名称和价格。

我想出了这段代码,但我对 xml 相当陌生,所以我不知道如何修改它或使它工作。

XDocument doc = XDocument.Load("booklibrary.xml");
            doc.Add(new XElement("book",
            new XAttribute("name", textBox1.Text),
            new XAttribute("price", textBox3.Text)));
            doc.Save("booklibrary.xml");

谢谢!

4

2 回答 2

1

XDocument如果您不使用命名空间,请不要使用。只需使用 an XElement,您的代码就可以工作:

var library = XElement.Load("booklibrary.xml");
library.Add(new XElement("book",
new XAttribute("name", textBox1.Text),
new XAttribute("price", textBox3.Text)));
library.Save("booklibrary.xml");

因为您使用XDocument,Add试图在根元素旁边<library>而不是在其内部添加新元素,导致异常,因为只能有一个根元素。在 MSDN 上可以找到几个说明性示例。

通过使用XElement如上所示,这个问题是固定的。

于 2012-09-06T18:33:03.330 回答
0

我会改用 LINQ to XML,它非常易于使用且功能丰富!:

XElement ele = XElement.Load("booklibrary.xml");
            ele.Element("library").Add(
                new XElement("book",
                             new XAttribute("name", textBox1.Text),
                             new XAttribute("price", textBox3.Text)));
ele.Save();

这更干净,而且它使用了新的 .NET 东西。

于 2012-09-06T18:18:44.827 回答