使用Linq对XML进行复杂排序 [英] Complex sorting of XML using Linq

查看:116
本文介绍了使用Linq对XML进行复杂排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图找到我的问题的解决方案,但我在这方面(LINQ,XML)知识是相当有限的。 :(
'已经找到了一个 simular建设,但我需要更多的豆蔻位。排序的复杂的方式。



考虑下面的XML文档:

  <信封> 
<车身与GT;
<表>
将反式GT;
< b> 1< / b>
< A> 3' ; / A>
< C> 5℃/ C>
< /反式GT;
将反式GT;
< D> 1< / D>
< A> 6< / A>
< C>第3版; / C>
< /反式GT;
将反式GT;
< A> 1< / A>
< C>第3版; / C>
< b> 5℃/ b>
< /反式GT;
< /表>
< /车身与GT;
<信封>

有没有什么办法,我可以排序里面<元素;反式GT;使用C#/ LINQ的,还是我必须打破了所有<反式GT;元素和排序逐一?



更新
我有一个文件,这就是我特林完成。 ;)

 <&信封GT; 
<车身及GT;
<表>
将反式GT;
< A>第3版; / A>
< B> 1 LT; / B>
将c取代; 5℃/ c取代;
< /反式GT;
将反式GT;
< A> 6 LT; / A>
将c取代; 3'; / c取代;
< D> 1 LT; / D>
< /反式GT;
将反式GT;
< A> 1 LT; / A>
< B> 5℃/ B>
将c取代; 3'; / c取代;
< /反式GT;
< /表>
< /车身与GT;
<&信封GT;


解决方案

 的XDocument XDOC = XDocument.Load(....); 
的foreach(变种反式中xDoc.Descendants(跨))
{
trans.ReplaceAll(trans.Elements()的OrderBy(X =方式> x.Name.LocalName)) ;
}

串newXml = xDoc.ToString();


I've tried to find a solution for my problem, but my knowledge in this area (Linq, XML) is rather limited. :( 've found a simular construction, but I need a litte bit more complex way of sorting.

Consider the Following XML document:

<Envelope>
    <Body>
        <Table>
            <Trans>
                <B>1</B>
                <A>3</A>
                <C>5</C>
            </Trans>
            <Trans>
                <D>1</D>
                <A>6</A>
                <C>3</C>
            </Trans>
            <Trans>
                <A>1</A>
                <C>3</C>
                <B>5</B>
            </Trans>
        </Table>
    </Body>
<Envelope>

Is there any way I can sort the elements inside <Trans> using C#/Linq, or do I have to break up all <Trans> elements and sort them one by one?

Update I have a file and this is what I'm tring to accomplish. ;)

<Envelope>
    <Body>
       <Table>
           <Trans>
               <A>3</A>
               <B>1</B>
               <C>5</C>
           </Trans>
           <Trans>
               <A>6</A>
               <C>3</C>
               <D>1</D>
           </Trans>
           <Trans>
               <A>1</A>
               <B>5</B>
               <C>3</C>
           </Trans>
       </Table>
   </Body>
<Envelope>

解决方案

XDocument xDoc = XDocument.Load(....);
foreach(var trans in xDoc.Descendants("Trans"))
{
    trans.ReplaceAll( trans.Elements().OrderBy(x=>x.Name.LocalName));
}

string newXml = xDoc.ToString();

这篇关于使用Linq对XML进行复杂排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆