使用c#中的元素对xml节点进行排序 [英] Sorting xml nodes using elements in c#

查看:110
本文介绍了使用c#中的元素对xml节点进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下需要根据出生日期排序的XML元素

Hi, I have the below XML element that need to sorted based on date of birth

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < Info>

< EmployeeDetail>

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Employee Name" name =" EMPLOYEE NAME" value =" Chirs" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey ="出生日期" name ="出生日期" value =" 02-07-1990" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Salary"名称= QUOT; SALARY" value =" 6,458" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < / EmployeeDetail>

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < EmployeeDetail>

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Employee Name" name =" EMPLOYEE NAME" value =" Mothie" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey ="出生日期" name ="出生日期" value =" 13-08-2000" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Salary"名称= QUOT; SALARY" value =" 6,458" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < / EmployeeDetail>

  < EmployeeDetail>

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Employee Name" name =" EMPLOYEE NAME" value =" Manie" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey ="出生日期" name ="出生日期" value =" 03-07-1990" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Salary"名称= QUOT; SALARY" value =" 6,458" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < / EmployeeDetail>

< / Info>





输出应该是这样的 


"< Info>

  < EmployeeDetail>

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Employee Name" name =" EMPLOYEE NAME" value =" Mothie" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey ="出生日期" name ="出生日期" value =" 13-08-2000" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Salary"名称= QUOT; SALARY" value =" 6,458" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < / EmployeeDetail>

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < EmployeeDetail>

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Employee Name" name =" EMPLOYEE NAME" value =" Manie" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey ="出生日期" name ="出生日期" value =" 03-07-1990" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Salary"名称= QUOT; SALARY" value =" 6,458" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < / EmployeeDetail>

  < EmployeeDetail>

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Employee Name" name =" EMPLOYEE NAME" value =" Chirs" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey ="出生日期" name ="出生日期" value =" 02-07-1990" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < field fieldKey =" Salary"名称= QUOT; SALARY" value =" 6,458" />

  &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; &NBSP; < / EmployeeDetail>

< / Info>"

            <Info>
<EmployeeDetail>
                <field fieldKey="Employee Name" name="EMPLOYEE NAME" value="Chirs"/>
                <field fieldKey="date of birth" name="DATE OF BIRTH" value="02-07-1990"/>
                <field fieldKey="Salary" name="SALARY" value="6,458"/>
              </EmployeeDetail>
              <EmployeeDetail>
                <field fieldKey="Employee Name" name="EMPLOYEE NAME" value="Mothie"/>
                <field fieldKey="date of birth" name="DATE OF BIRTH" value="13-08-2000"/>
                <field fieldKey="Salary" name="SALARY" value="6,458"/>
              </EmployeeDetail>
  <EmployeeDetail>
                <field fieldKey="Employee Name" name="EMPLOYEE NAME" value="Manie"/>
                <field fieldKey="date of birth" name="DATE OF BIRTH" value="03-07-1990"/>
                <field fieldKey="Salary" name="SALARY" value="6,458"/>
              </EmployeeDetail>
</Info>


Output should be like this 
"<Info>
  <EmployeeDetail>
                <field fieldKey="Employee Name" name="EMPLOYEE NAME" value="Mothie"/>
                <field fieldKey="date of birth" name="DATE OF BIRTH" value="13-08-2000"/>
                <field fieldKey="Salary" name="SALARY" value="6,458"/>
              </EmployeeDetail>
              <EmployeeDetail>
                <field fieldKey="Employee Name" name="EMPLOYEE NAME" value="Manie"/>
                <field fieldKey="date of birth" name="DATE OF BIRTH" value="03-07-1990"/>
                <field fieldKey="Salary" name="SALARY" value="6,458"/>
              </EmployeeDetail>
  <EmployeeDetail>
                <field fieldKey="Employee Name" name="EMPLOYEE NAME" value="Chirs"/>
                <field fieldKey="date of birth" name="DATE OF BIRTH" value="02-07-1990"/>
                <field fieldKey="Salary" name="SALARY" value="6,458"/>
              </EmployeeDetail>
</Info>"

推荐答案

基于在

https://social.msdn.microsoft.com/Forums/en-US/fbac1312-23fe-49df-8aa9-4cc688d45ed1
,请查看此示例:

Based on https://social.msdn.microsoft.com/Forums/en-US/fbac1312-23fe-49df-8aa9-4cc688d45ed1, check this example:

string example = @"
        <Info>
            <EmployeeDetail>
                <field fieldKey=""Employee Name"" name=""EMPLOYEE NAME"" value=""Chirs""/>
                <field fieldKey=""date of birth"" name=""DATE OF BIRTH"" value=""02-07-1990""/>
                <field fieldKey=""Salary"" name=""SALARY"" value=""6,458""/>
            </EmployeeDetail>
            <EmployeeDetail>
                <field fieldKey=""Employee Name"" name=""EMPLOYEE NAME"" value=""Mothie""/>
                <field fieldKey=""date of birth"" name=""DATE OF BIRTH"" value=""13-08-2000""/>
                <field fieldKey=""Salary"" name=""SALARY"" value=""6,458""/>
            </EmployeeDetail>
            <EmployeeDetail>
                <field fieldKey=""Employee Name"" name=""EMPLOYEE NAME"" value=""Manie""/>
                <field fieldKey=""date of birth"" name=""DATE OF BIRTH"" value=""03-07-1990""/>
                <field fieldKey=""Salary"" name=""SALARY"" value=""6,458""/>
            </EmployeeDetail>
        </Info>";

XDocument doc = XDocument.Parse( example );

Console.WriteLine( doc );

Func<string, DateTime?> conv = s => s == null ? (DateTime?)null : DateTime.ParseExact( s, "dd'-'MM'-'yyyy", CultureInfo.InvariantCulture );
doc.Root.ReplaceAll(
    doc
        .Root
        .Elements()
        .OrderByDescending( ed => conv( ed.Elements( "field" ).FirstOrDefault( f => f.Attribute( "fieldKey" )?.Value == "date of birth" )?.Attribute( "value" )?.Value ) ) );

Console.WriteLine( doc );








这篇关于使用c#中的元素对xml节点进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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