使用linq将数据添加到现有xml文件

Mr_*_*een 9 c# xml linq c#-4.0

我是.net初学者.我需要向xml文件添加一些数据

xml文件是:

<stock>    --- 1st level  /* i dont want to create this because this exists */ 
  <items>  --  2nd level
    <productname>Toothpaste</productname>
    <brandname>Colgate</brandname>
    <quantity>12</quantity>
    <price>10</price>
  </items>
  <items>
    <productname>Toothpaste</productname>
    <brandname>Pepsodent</brandname>
    <quantity>20</quantity>
    <price>12</price>
  </items>
</stock>
Run Code Online (Sandbox Code Playgroud)

我需要补充一下

productname --> Toothpaste
brandname   --> CloseUp
quantity    --> 16
price       --> 15
Run Code Online (Sandbox Code Playgroud)

到他们各自的标签.我现在面临的问题是我需要深入两个级别才能写入各自的标签,我不知道该怎么做.

我尝试了下面的代码:( 不工作)

XDocument doc = new XDocument(      
                  new XElement("stock",  /* how to go inside existing "stock"? */
                     new XElement("items", 
                          new XElement("productname", "Toothpaste"),
                          new XElement("brandname", "CloseUp"),
                          new XElement("quantity","16"),
                          new XElement("price","15"))));
Run Code Online (Sandbox Code Playgroud)

必须有其他方法来实现这一点,我不知道.
与linq无关的答案也很受欢迎.但更喜欢linq因为我在我的项目中实现了完整的linq.


提前帮助 谢谢.

Hen*_*man 22

假设你有原始文件:

 var doc = XDocument.Load(...);
Run Code Online (Sandbox Code Playgroud)

然后创建一个新元素(而不是文档)

  //XDocument doc = new XDocument(      
  //  new XElement("stock",  /* how to go inside existing "stock"? */
   var newElement =  new XElement("items", 
                      new XElement("productname", "Toothpaste"),
                      new XElement("brandname", "CloseUp"),
                      new XElement("quantity","16"),
                      new XElement("price","15"));
Run Code Online (Sandbox Code Playgroud)

然后插入它:

  doc.Element("stock").Add(newElement);

  doc.Save(....);
Run Code Online (Sandbox Code Playgroud)