我遇到了与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>
这是xml代码。
答案 0 :(得分:2)
我建议查看XDocument
类,这样可以更轻松地处理XML文件。没有XML就很难给出一个样本,但是看一下这个答案,看看如何做到这一点:
Easiest way to add xml a node with a bunch of children nodes in .Net?
如果您发布一些示例XML,我们可以为您提供一些代码。基本思路是使用XDocument.Load(filename)
然后XElement.Add(...)
插入新元素。
<强>更新强> 此代码将从文件加载XML,添加一些元素,并保存到其他文件。它可能不是您尝试添加的XML,但应该足以让您前进。如果需要,您也可以保存回原始文件(我保存到foo2.xml,所以我没有覆盖我的测试文件)。
你可以看到我用一个字符串数组替换了listbox1.Items - 你应该能够交换这些行并得到你想要的。
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");
}
答案 1 :(得分:0)
C#是一种面向对象的语言,您会发现将问题分解为更小的部分(类,属性和方法)是有帮助的。
我建议你回答两个我回答的问题,我解释这个方法。
https://stackoverflow.com/a/5609126/353147
第二个问题可能只是在C#上进行了3个月,但如果你愿意,可以看一下:
https://stackoverflow.com/a/6802442/353147
类方法非常方便,可以快速操作值并快速读/写文件。
我会为你的方法(书籍和书籍)创建两个类。 Books类将读/写文件并包含书籍列表和从列表中添加/减去书籍的能力。
我看到的唯一困难是每本书都有不同的标签名称,但这不是一个巨大的问题,只是更难。
如果您的图书标记可以从<ID1>
更改为<Book ID="1">
以便更简单,那么您可以快速操作图书标记列表(因为它已在Linq中实现)。
我现在没有时间写一个完整的例子,但是如果你发现这两个链接很有意思并希望看到一个例子,我可以稍后写一个。在此留下评论。