2017-02-21 2 views
0

지금까지 왔지만 어떻게하면 XElement을 첫 번째 장소가 아닌 3 번째 위치에 추가 할 수 있습니까?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

@ 해당 답변이 맞으면 나. 수락 있음으로 표기하십시오. –

+0

@ Dan-homola. 당신 말이 맞아요. 끝났다. – TheNewone

-2

난 당신이 원하는대로 그럼 당신은 모든 어린이와 요소 mydoc이고를 반복하고 추가하거나 삽입 할 수 있습니다

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

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

를 사용하는 것이 좋습니다 것입니다. 살펴보기 XmlDocument-Class

+1

'XDocument'에서'XmlDocument'로 전환하는 것은 불필요하며 이점을 제공하지 않습니다. 또한, 당신은 질문에 대답하지 않습니다. – Amy