2017-02-21 141 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