我有一个像这样的 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
}
}
相关分类