2
我有一個這樣的XML文件:的XElement屬性排序
<Users>
<User>
<Adress Name="bbbb"/>
<Adress Name="aaaa" />
</User>
</Users>
我想User
元素的升序排序節點。我如何訂購Adress
元素?
謝謝你的幫助。
我有一個這樣的XML文件:的XElement屬性排序
<Users>
<User>
<Adress Name="bbbb"/>
<Adress Name="aaaa" />
</User>
</Users>
我想User
元素的升序排序節點。我如何訂購Adress
元素?
謝謝你的幫助。
如果節點是用戶節點:
node.Elements("Adress").OrderBy(e=>e.Attribute("Name").Value)
你只是想在內存中的XML對象的工作或你在找存儲排序結果回來的文件?
此代碼顯示重新排序XDocument中的元素,以便可以保存它。
string xml = @"<Users>
<User>
<Address Name=""bbbb""/>
<Address Name=""aaaa"" />
</User>
<User>
<Address Name=""dddd""/>
<Address Name=""cccc"" />
</User>
</Users> ";
XDocument document = XDocument.Parse(xml);
var users = document.Root.Elements("User");
foreach (var user in users)
{
var elements = user.Elements("Address").OrderBy(a => a.Attribute("Name").Value).ToArray();
user.Elements().Remove();
user.Add(elements);
}
如果你想要一個有序的內存模型,那麼你可以做這樣的
var query = from user in document.Root.Elements("User")
select new
{
Addresses = from address in user.Elements("Address")
orderby address.Attribute("Name").Value
select new
{
Name = address.Attribute("Name").Value
}
};
foreach (var user in query)
{
foreach (var address in user.Addresses)
{
// do something with address.Name
}
}
「住址」是一個錯字。如果它實際上是你的文件的外觀,可能需要解決這個問題。 – 2011-05-25 01:43:25