Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <root>
- <one>1</one>
- <two>2</two>
- </root>
- public static class XElementExtensions
- {
- public static void OrderElements(this XElement parent, params string[] orderedLocalNames)
- {
- List<string> order = new List<string>(orderedLocalNames);
- var orderedNodes = parent.Elements().OrderBy(e => order.IndexOf(e.Name.LocalName) >= 0? order.IndexOf(e.Name.LocalName): Int32.MaxValue);
- parent.ReplaceNodes(orderedNodes);
- }
- }
- // using the extension method before persisting xml
- this.Root.Element("parentNode").OrderElements("one", "two", "three", "four");
- static void Main(string[] args)
- {
- XDocument doc = new XDocument(
- new XElement("root",
- new XElement("one", 1),
- new XElement("two", 2)
- ));
- var results = from XElement el in doc.Element("root").Descendants()
- orderby el.Value descending
- select el;
- foreach (var item in results)
- Console.WriteLine(item);
- doc.Root.ReplaceAll( results.ToArray());
- Console.WriteLine(doc);
- Console.ReadKey();
- }
- XElement node = ...get the element...
- //Move up
- if (node.PreviousNode != null) {
- node.PreviousNode.AddBeforeSelf(node);
- node.Remove();
- }
- //Move down
- if (node.NextNode != null) {
- node.NextNode.AddAfterSelf(node);
- node.Remove();
- }
Add Comment
Please, Sign In to add comment