0

私は持っている

XmlElement root;

このような構造を含む

<?xml version="1.0" encoding="us-ascii"?>
<EntityCollection xmlns="">
    <Application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <id>C</id>
        <CDate>2010-06-29T00:00:00</CDate>
        <Applicants>
            <PersonID>1</PersonID>     
            <Age>4651</Age>
            <IncomeCollection>
                <Amount>20</Amount>
                <Frequency>W</Frequency>
            </IncomeCollection>
        </Applicants>
        <Applicants>
            <PersonID>15</PersonID>     
            <Age>4651</Age>
            <IncomeCollection>
                <Amount>20</Amount>
                <Frequency>W</Frequency>
            </IncomeCollection>
        </Applicants>
        <Applicants>
            <PersonID>6</PersonID>     
            <Age>4651</Age>
            <IncomeCollection>
                <Amount>20</Amount>
                <Frequency>W</Frequency>
            </IncomeCollection>
        </Applicants>
        <tag>N</tag>
    </Application>
</EntityCollection>

結果が以下のようになるように、応募者を PersonID で並べ替えたい:

<?xml version="1.0" encoding="us-ascii"?>
<EntityCollection xmlns="">
    <Application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <id>C</id>
        <CDate>2010-06-29T00:00:00</CDate>
        <Applicants>
            <PersonID>1</PersonID>     
            <Age>4651</Age>
            <IncomeCollection>
                <Amount>20</Amount>
                <Frequency>W</Frequency>
            </IncomeCollection>
        </Applicants>
        <Applicants>
            <PersonID>6</PersonID>     
            <Age>4651</Age>
            <IncomeCollection>
                <Amount>20</Amount>
                <Frequency>W</Frequency>
            </IncomeCollection>
        </Applicants>
        <Applicants>
            <PersonID>15</PersonID>     
            <Age>4651</Age>
            <IncomeCollection>
                <Amount>20</Amount>
                <Frequency>W</Frequency>
            </IncomeCollection>
        </Applicants>
        <tag>N</tag>
    </Application>
</EntityCollection>
4

1 に答える 1

1

Altought XmlParsers は、xml ファイルの順序で要素を取得することを保証しません。これは、Linq2Xml を使用したソリューションです。

var xDoc = XDocument.Load(fname);
var applicants = xDoc.Descendants("Applicants")
                     .OrderBy(a=>(int)a.Element("PersonID"))
                     .ToList();
applicants.ForEach(a=>a.Remove());
xDoc.Root.Element("Application").Add(applicants);
xDoc.Save(fname);
于 2013-06-06T13:45:28.253 に答える