C# 使用linq to xml交换xml文件中的两个元素及其子元素
我有一个xml文件,需要交换它的几个标记。 例如:在下面的示例中,我想交换元素(B和C及其子元素)并将其更新回相同的xmlC# 使用linq to xml交换xml文件中的两个元素及其子元素,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我有一个xml文件,需要交换它的几个标记。 例如:在下面的示例中,我想交换元素(B和C及其子元素)并将其更新回相同的xml <A> <B> <xxx> <zzz> . </B> <C> <nnn> <mmm> . </C> </A> . . 所以最后应该是下面这样 <A&
<A>
<B>
<xxx>
<zzz>
.
</B>
<C>
<nnn>
<mmm>
.
</C>
</A>
.
.
所以最后应该是下面这样
<A>
<C>
<nnn>
<mmm>
.
</C>
<B>
<xxx>
<zzz>
.
</B>
</A>
.
.
在阅读+解析+保存xml方面有什么帮助吗?很抱歉使用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)
可能重复Don think@FortyTwo-在我的xml文件中,所有标记都是不同的和不相关的(A-是根元素,(B,C)-它的子元素和B.C有自己的子元素。而且我的xml中还有更多的标记,所以代码需要找到“A”首先,只对其进行操作。逻辑是一样的。找到XmlNode并将其插入正确的XmlElement之后。感谢您的代码。有没有方法可以共享C代码?@ghatwala-通过转换器运行重要部分并将其发布。我不是C代码,所以我不知道代码是否有效或正确。
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
//=======================================================