2017-02-21 166 views
0

我到目前爲止,但是如何在第三位添加XElement而不是第一位?將元素添加到xml節點

我必須將它添加到2個大文件。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    var xml = XElement.Load(Server.MapPath(map1)); 
    var noprovider = xml.Elements("Component").Where(d => !d.Elements("L").Any()); 
    var prov in noprovider) 
    { 
     prov.AddFirst(new XElement("L", "")); 
    } 
    xml.Save(Server.MapPath(map1)); 
} 

的XML

<Reservedele> 
    <Component> 
     <Type>Støvsuger</Type> 
     <Art>yiryidryi</Art> 
     <Bemærkning> adadgadg</Bemærkning> 
     <Varenummer>dfgdfg</Varenummer> 
     <OprettetAf>John</OprettetAf> 
     <Date>28. januar 2017</Date> 
    </Component> 
</Reservedele> 

回答

4

我不確定要理解你的問題。你的意思是這樣嗎?

using System; 
using System.IO; 
using System.Linq; 
using System.Xml.Linq; 

namespace XmlTest 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var xmlText = @" 
<Reservedele> 
    <Component> 
    <Type>Støvsuger</Type> 
    <Art>yiryidryi</Art> 
    <Bemærkning> adadgadg</Bemærkning> 
    <Varenummer>dfgdfg</Varenummer> 
    <OprettetAf>John</OprettetAf> 
    <Date>28. januar 2017</Date> 
    </Component> 
</Reservedele>"; 

      using (var sr = new StringReader(xmlText)) 
      { 
       var xml = XElement.Load(sr); 
       var noprovider = xml.Elements("Component").Where(d => !d.Elements("L").Any()); 

       noprovider.Elements().ElementAt(1).AddAfterSelf(new XElement("L", "")); 
       //noprovider.Elements("Art").First().AddAfterSelf(new XElement("L", "")); 

       Console.WriteLine(xml.ToString()); 
      } 

      Console.WriteLine("\nPress any key ..."); 
      Console.ReadKey(); 
     } 
    } 
} 
+0

謝謝@Tomas Jakl。它像一個魅力。 – TheNewone

+1

@TheNewone如果答案正確,請考慮將其標記爲已接受 –

+0

@ Dan-homola。你是對的。完成。 – TheNewone

-2

我會建議你使用

 System.Xml.XmlDocument myDoc = new System.Xml.XmlDocument(); 

     try 
     { 
      myDoc.Load(XMLFullFileName); 
     } 
     catch (Exception e) 
     { 
      throw new Exception("Loading failed!", e); 
     } 

然後你可以遍歷myDoc及其所有子和元素和追加或插入你的願望。看看XmlDocument-Class

+1

從'XDocument'切換到'XmlDocument'是不必要的,並且不提供任何好處。另外,你沒有回答這個問題。 – Amy