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

Спасибо @ Томас Якл. Отлично работает. – 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

Смежные вопросы