添加、删除和操作数据
本文关键字:操作数 数据 操作 删除 添加 | 更新日期: 2023-09-27 18:16:33
我在与c#集成xml时遇到了麻烦,使用UI,我可以以我需要的方式创建文档,包括保存/加载/显示功能,我缺乏的是重新加载和现有xml文件"Books.xml"的能力,以添加或删除条目并以相同的名称保存它。我的代码是:
XmlTextWriter Writer = new XmlTextWriter ("NewDoc.xml", Encoding.UTF8);
Writer.WriteStartDocument();
Writer.WriteStartElement("SAVED");
Writer.WriteStartElement("TITLE");
Writer.WriteString(textBox2.Text);
Writer.WriteEndElement();//TITLE
foreach (string item in listBox1.Items)
{
Writer.WriteStartElement("ITEM");
Writer.WriteString(item);
Writer.WriteEndElement();//ITEM
}
Writer.WriteEndElement();//SAVED
Writer.WriteEndDocument();
Writer.Close();
我知道我可能不是很清楚,但我是一个完全的新手,我才做了3个月。
<?xml version="1.0" encoding="utf-8"?>
<Books>
<ID1>
<TITLE>Harry Potter
</TITLE>
<AUTHOR>JK Rowling
</AUTHOR>
<PUBLISHED>1995
</PUBLISHED>
<PUBLISHERS>Bloomberg,
</PUBLISHERS>
</ID1>
<ID2>
<TITLE>Disc World
</TITLE>
<AUTHOR>Terry Pratchet
</AUTHOR>
<PUBLISHED>1990
</PUBLISHED>
<PUBLISHERS>ETC
</PUBLISHERS>
</ID2>
<ID3>
<TITLE>IT
</TITLE>
<AUTHOR>Stephen King
</AUTHOR>
<PUBLISHED>1999
</PUBLISHED>
<PUBLISHERS>ETC
</PUBLISHERS>
</ID3>
</Books>
我建议查看XDocument
类,它使处理XML文件变得容易得多。如果没有XML,很难给出一个示例,但是看看下面的答案,了解如何实现:
最简单的方法添加xml节点与一堆子节点在。net ?
如果你发布一些示例XML,我们可以为你想出一些代码。基本思路是先使用XDocument.Load(filename)
,然后使用XElement.Add(...)
来插入新元素。
这段代码将从一个文件加载XML,添加一些元素,然后保存到另一个文件中。它可能不是您想要添加的XML,但应该足够了。如果需要,还可以保存回原始文件(我保存到foo2.xml,这样就不会覆盖测试文件)。
你可以看到我替换了listbox1。项与字符串数组——你应该能够交换这些行,并得到你想要的。
private static void Main()
{
var xdoc = XDocument.Load(@"C:'temp'foo.xml");
var itemsToAdd = new[] { "item1", "item2", "item3" };
// var itemsToAdd = listBox1.Items;
xdoc.Root.Add(
new XElement("SAVED",
new XElement("TITLE",
itemsToAdd.Select(e => new XElement(e)))));
xdoc.Save(@"c:'temp'foo2.xml");
}
c#是一种面向对象的语言,你会发现把你的问题分解成更小的部分(类、属性和方法)很有帮助。
对于我所回答的与你类似的问题,我建议你参考两个答案来解释这种方法。
https://stackoverflow.com/a/5609126/353147第二个可能是你学c#才3个月就无法理解的,但是如果你想看的话,可以看看:
https://stackoverflow.com/a/6802442/353147类的方法是方便的,易于操作值和读取/写入文件快速。
我将为您的方法创建两个类(Books和Book)。Books类将对文件进行读/写操作,并包含图书列表和从列表中添加/减去图书的功能。
我看到的唯一困难是每本书有一个不同的标签名称,但这不是一个巨大的障碍,只是更困难。
如果您的book标签可以从<ID1>
更改为<Book ID="1">
,这将使它更简单,那么您可以快速操作book标签列表(因为它已经在Linq中实现)。
我现在没有时间写一个完整的例子,但如果你觉得这两个链接很有趣,想看一个例子,我可以稍后写一个。在这里留下你的评论