在 XML C# 中第一次出现后更改子节点名称的值

我有一个像这样的 XML,


<Names>

    <Name>

        <FName>Abc</FName>

        <LName>XYZ</LName>

    </Name>

    <Name>

        <FName>Abc2</FName>

        <LName>XYZ2</LName>

    </Name>

    <Name>

        <FName>Abc3</FName>

        <LName>XYZ3</LName>

    </Name>

    <Name>

        <FName>Abc4</FName>

        <LName>XYZ4</LName>

    </Name>

</Names>

我试图在 c# 中预言性地更改节点名称,如果它们出现不止一次并且除了第一个节点。第一个节点名称保持不变;


处理完 XML 后应该是这样的;


<Names>

    <Name> // kepp first node name same

        <FName>Abc</FName>

        <LName>XYZ</LName>

    </Name>

    <ChildName> //changed

        <FName>Abc2</FName>

        <LName>XYZ2</LName>

    </ChildName>

    <ChildName> //changed

        <FName>Abc3</FName>

        <LName>XYZ3</LName>

    </ChildName>

    <ChildName> // changed

        <FName>Abc4</FName>

        <LName>XYZ4</LName>

    </ChildName>

</Names>

Name的节点可以是一个,如果是一次,保持不变,如果多则保留第一个并更改其他人的名称。


我正在尝试这个 XML 对象的IEnumerable<XElement>类型;


//check if NAME node occurs multiple times, make other to child.

var nameCounts = element.Descendants().Where(x => x.Name.LocalName == "Name");

int number = nameCounts.Count();

if (number > 1) // if occurance more than one

{

    foreach (var e in element.Descendants().Where(x => x.Name.LocalName == "Name").ToList())

    {

        //e.NodesAfterSelf();

        // unable to understand what to do

    }

}


守着星空守着你
浏览 176回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP