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

ありがとう@トマスJakl。それは魅力のように働く。 – TheNewone

+1

@Newone答えが正しい場合は、Acceptedとマークすることを検討してください。 –

+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

関連する問題