C# 4.0 重新排序XML节点和元素
关于xml重新排序的工作 我的XML如下所示:C# 4.0 重新排序XML节点和元素,c#-4.0,linq-to-xml,C# 4.0,Linq To Xml,关于xml重新排序的工作 我的XML如下所示: <Subjects> <Subject> <Name></Name> <Height></Height> <Addresss> <Address> <City>AB</City> </Address> </Add
<Subjects>
<Subject>
<Name></Name>
<Height></Height>
<Addresss>
<Address>
<City>AB</City>
</Address>
</Addresses>
</Subject>
<Subject>
<Name></Name>
<Height></Height>
<Addresss>
<Address>
<City>CD</City>
</Address>
</Addresses>
</Subject>
</Subjects>
我使用XElement语法创建了这些xml,以便实现强制解析为XmlDocument。
如何在Xml LINQ中实现同样的功能 我认为在这个场景中应用XSLT(样式表)比使用LINQ更容易。如果您有任何示例,请与我分享。
<Order>
<Subjects>
<Subject>
<Name></Name>
<Height></Height>
<Address ref="A1"/>
</Subject>
<Subject>
<Name></Name>
<Height></Height>
<Address ref="A2"/>
</Subject>
</Subjects>
<Addresss>
<Address id="A1">
<City>AB</City>
</Address>
<Address id="A2">
<City>AB</City>
</Address>
</Addresses>
</Order>
var index = 0;
var output = new XmlDocument();
var order = output.AppendChild(output.CreateElement("Order" ));
var subjects = order .AppendChild(output.CreateElement("Subjects" ));
var addresses = order .AppendChild(output.CreateElement("Addresses"));
foreach (XmlElement subject in input.SelectNodes("/Subjects/Subject"))
{
index++;
var address = (XmlElement)subject.RemoveChild(subject.SelectSingleNode ("Addresses"));
address = (XmlElement)address.FirstChild; // Addresses to Address
address.SetAttribute("id", index.ToString());
var newAddress = (XmlElement)subject.AppendChild(input.CreateElement("Address"));
newAddress.SetAttribute("ref", index.ToString());
subjects .AppendChild(output.ImportNode(subject, true));
addresses.AppendChild(output.ImportNode(address, true));
}
output.Save(Console.Out);
Console.ReadLine();