如何在xml文件中创建元素 [英] How to create elements in xml file
本文介绍了如何在xml文件中创建元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
您好,我首先创建一个xml文档,并为其添加日期,然后我检查文档是否存在然后将值添加到xml文档中
i想要在我的xml中生成这样的内容文件
Hi i am first creating a xml document, and adding date to it, and then i am checking if the document exists then add value to the xml document
i want to generate like this in my xml document
<book>
<firstname>Balle</firstname>
<lastname>Largen</lastname>
</book>
<book>
<firstname>Kalle</firstname>
<lastname>Svensson</lastname>
</book>
但我的代码现在生成这样的,当再次添加数据时
But my code right now generates like this, when adding data another time
<?xml version="1.0" encoding="utf-8"?>
<book>
<firstname>Balle</firstname>
<lastname>Largen</lastname>firstnameKallelastnameSvensson</book>
这是我的功能
here is my function
private void CreateXmlDoc()
{
var firstname = TextBoxFirstName.Text;
var lastname = TextBoxLastName.Text;
var settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
settings.CloseOutput = true;
settings.OmitXmlDeclaration = true;
DateTime now = DateTime.Now;
var fileName = Server.MapPath("~") + "ansokningar"+ now.Year+"-"+now.Month+"-"+now.Day+".xml";
if (!File.Exists(fileName))
{
var writer = XmlWriter.Create(fileName, settings);
writer.WriteStartElement("book");
writer.WriteElementString("firstname", firstname);
writer.WriteElementString("lastname", lastname);
writer.WriteEndElement();
writer.Flush();
writer.Close();
}
else
{
var xDocument = XDocument.Load(fileName);
var xDoc = new XmlDocument();
xDoc.CreateElement("book");
XElement root = xDocument.Element("book");
if (root != null)
{
root.Add("firstname",firstname);
root.Add("lastname", lastname);
}
xDocument.Save(fileName);
}
}
推荐答案
看看这里: http://msdn.microsoft.com/en -us / library / bb387089.aspx [ ^ ]
在你的情况下:
Take a look here: http://msdn.microsoft.com/en-us/library/bb387089.aspx[^]
In your case:
XElement books =
new XElement("books",
new XElement("book",
new XElement("firstname", "Balle"),
new XElement("lastname", "Largen")
),
new XElement("book",
new XElement("firstname", "Kalle"),
new XElement("lastname", "Svensson")
)
);
0)你只能有一个根:你需要一个外部元素如books
例如。
1) XmlDocument.DocumentElement [ ^ ]将获得根。
2)为什么要像这样混合XDocument和XmlDocument?
我会用这样的东西(LinqPad demo):
0) You can have only one root: you need an outer element likebooks
for example.
1) XmlDocument.DocumentElement[^] will get the root.
2) Why mixing XDocument and XmlDocument like this?
I would use something like this (LinqPad demo):
XDocument addBook(string filename, string firstname, string lastname)
{
XDocument xml;
XElement books;
if (File.Exists(filename))
{
xml = XDocument.Load(filename);
books = xml.Root;
}
else
{
xml = new XDocument();
books = new XElement("books");
xml.Add(books);
}
books.Add(
new XElement("book",
new XElement("firstname", firstname),
new XElement("lastname", lastname))
);
xml.Save(filename);
return xml;
}
void Main()
{
Console.WriteLine(addBook(@"d:\temp\t.xml","John","Smith"));
}
这篇关于如何在xml文件中创建元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文