2017-05-31 8 views
0

私はスワップする必要があるタグがほとんどないxmlファイルを持っています。 例:以下のサンプルでは、​​要素(BとCとそのサブ要素)を入れ替えて同じxmlに戻したいと考えています。linqからxmlを使用してxmlファイル内の2つの要素とそのサブ要素を交換する

<A> 
    <B> 
     <xxx> 
     <zzz> 
     . 
    </B> 
    <C> 
     <nnn> 
     <mmm> 
     . 
    </C> 
</A> 

最終的には以下のようになります。

<A> 
    <C> 
     <nnn> 
     <mmm> 
     . 
    </C> 
    <B> 
     <xxx> 
     <zzz> 
     . 
    </B> 
</A> 

読み込み+解析+セーブバックxmlのヘルプはありますか?

+0

可能([いるXmlNodeList C#でノードをスワップ]重複https://stackoverflow.com/questions/16716799/swapping-nodes-in-xmlnodelist-c-sharp ) – FortyTwo

+0

@FortyTwoは私のxmlファイルのように、すべてのタグは異なっていて、無関係です(A - ルート要素、(B、C)) - その子とBCは独自の子要素を持っています。私のxmlでは、コードは "A"を最初に見つけてそれだけで動く必要があります – ghatwala

+0

論理は同じです。* XmlNode *を見つけて、正しい* XmlElement *の後ろに挿入してください。 – FortyTwo

答えて

1

VBについてはごめんなさい。テストXMLを作成するコードは同じではありませんが、Cの後にAを移動するコードは近いはずです。

 Dim xe As XElement 
     ' to load from a file - similar to C# 
     ' Dim yourpath As String = "your path here" 
     'xe = XElement.Load(yourpath) 

     ' for testing 
     xe = <A> 
       <B> 
        <xxx></xxx> 
        <zzz></zzz> 
     b stuff 
    </B> 
       <C> 
        <nnn></nnn> 
        <mmm></mmm> 
     c stuff 
    </C> 
      </A> 


     'this should be close to what the C# will look like 
     Dim holdB As XElement = New XElement(xe.<B>.FirstOrDefault) 'create copy of the B element 
     xe.<B>.Remove() 'remove B 

     xe.<C>.FirstOrDefault.AddAfterSelf(holdB) 'add after C 

     ' to save file - similar to C# 
     ' xe.Save(yourpath) 

編集:変換部

XElement xe = default(XElement); 
// to load from a file - similar to C# 
string yourpath = "your path here"; 
xe = XElement.Load(yourpath); 

XElement holdB = new XElement(xe.FirstOrDefault); 
//create copy of the B element 
xe.Remove(); 
//remove B 

xe.FirstOrDefault.AddAfterSelf(holdB); 
//add after C 

// to save file - similar to C# 
xe.Save(yourpath); 

//======================================================= 
//Service provided by Telerik (www.telerik.com) 
//Conversion powered by NRefactory. 
//Twitter: @telerik 
//Facebook: facebook.com/telerik 
//======================================================= 
+0

Th URコードのためのanks。 C#コードを共有できる方法はありますか? – ghatwala

+0

@ハットワラ - 重要な部分をコンバータで実行して投稿しました。私はコードが正しく動作しているかどうかわからないので、C#ではありません。 – dbasnett

関連する問題