如何在xml文件中创建元素 [英] How to create elements in xml file

查看:76
本文介绍了如何在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 like books 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆