将数据添加到XML文件(Adding data to XML file)

2019-10-17 13:28发布

我的XML文件是:

 <?xml version="1.0" encoding="utf-8" ?> <people> <person index="1" name="Zlecenie numer jeden" beneficiary="Kowalski" description="Proste zlecenie jakiejs strony czy cos" price="800" deadline="27.12.2013" /> </people> 

我怎么可以添加到这个已存在的文件,像新的记录:

<person
index="4"
name="Zlecenie numer cztery"
beneficiary="Kowalski"
description="Proste zlecenie jakiejs strony czy cos"
price="800"
deadline="27.12.2013" />

或删除或者如果你知道如何更新现有的记录,然后这一点。 谢谢

Answer 1:

尝试添加元素为XML下面的代码片段。 请注意,我已经使用XML作为字符串转义字符。 你可能有XML文件

var str = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n<people>\r\n<person\r\nindex=\"1\"\r\nname=\"Zlec" +
"enie numer jeden\"\r\nbeneficiary=\"Kowalski\"\r\ndescription=\"Proste zlecenie jakiejs " +
"strony czy cos\"\r\nprice=\"800\"\r\ndeadline=\"27.12.2013\" />\r\n</people>";

var xml = XElement.Parse(str);
var newNode = new XElement("person", 
                    new XAttribute("index", 4),
                    new XAttribute("name", "Zlecenie numer cztery"),
                    new XAttribute("beneficiary", "Kowalski"),
                    new XAttribute("description", "Proste zlecenie jakiejs strony czy cos"),
                    new XAttribute("price", 800),
                    new XAttribute("deadline", "27.12.2013"));

xml.Add(newNode);

//you can store whole xml tree in one variable simply by calling ToString on xml
str = xml.Tostring();

Console.WriteLine(str);

打印:

<people>
  <person index="1" name="Zlecenie numer jeden" beneficiary="Kowalski" description="Proste zlecenie jakiejs strony czy cos" price="800" deadline="27.12.2013" />
  <person index="4" name="Zlecenie numer cztery" beneficiary="Kowalski" description="Proste zlecenie jakiejs strony czy cos" price="800" deadline="27.12.2013" />
</people>


Answer 2:

XDocument xdoc = XDocument.Load(xmlFileName);

void Update(XDocument xdoc )
{
     XElement repser = doc.Root.Element("people").Elements("person").Where(r => (int)r.Attribute("index") = xdoc.index).FirstOrDefault();
    if (repser != null)
    {
        // update
        repser.SetAttribute("name", xdoc.name);
        repser.SetAttribute("beneficiary", xdoc.beneficiary);
        repser.SetAttribute("description", xdoc.description);
        repser.SetAttribute("price", xdoc.price);
        repser.SetAttribute("deadline", xdoc.deadline);
        // and so on
     }
     else
     {
        //insert
        doc.Root.Element("people").Add
           new XElement("person",
             new XAttribute("index", xdoc.id),
             new XAttribute("name", xdoc.name),
             new XAttribute("beneficiary", xdoc.beneficiary),
             new XAttribute("description", xdoc.description),
             new XAttribute("price", xdoc.price),
             new XAttribute("deadline", xdoc.deadline)
             // and so on
           ));
      }
}

您可以在XAttribute值的数值手动插入用于更新的else语句。



文章来源: Adding data to XML file