|
επιστημη さん Sort のプログラム参考になりました。 C#を使い始めたばっかりなので(自分の中ではC++を一番使える)delegate の書き方にびっくりです。
Hongliang さん >配列なり List<T> なりを先に作って for / foreach で一つずつ突っ込んでかないと。 中博俊さん >まぁべたに引っこ抜いてSortですね。 XmlNodeList を Sort できないことがわかりました。 並べ替えた結果を取得するためには、配列やList に追加しなければならないので、 今回は、SortedList を利用して要素を追加後に Sort しないですむようにしたいと思います。
static void Main(string[] args) { string s = "<?xml version=\"1.0\"?>" + "<root>" + " <variable name=\"apple\">りんご</variable>" + " <variable name=\"orange\">みかん</variable>" + " <variable name=\"banana\">ばなな</variable>" + " <variable name=\"peach\">もも</variable>" + " <variable name=\"grape\">ぶどう</variable>" + "</root>" ;
XmlDocument document = new XmlDocument(); document.LoadXml(s); XmlElement root = document.DocumentElement; XmlElement[] children = new XmlElement[root.ChildNodes.Count]; int i = 0; foreach(XmlNode child in root.ChildNodes) { children[i++] = (XmlElement)child; } Array.Sort(children, delegate(XmlElement x, XmlElement y) { return x.Attributes["name"].Value.CompareTo(y.Attributes["name"].Value); }); Console.WriteLine("επιστημη さんのコード"); foreach(XmlElement child in children) { Console.WriteLine("{0} = {1}", child.Attributes["name"].Value, child.InnerText); }
SortedList<string, XmlNode> sorted = new SortedList<string, XmlNode>(); foreach(XmlNode child in root.ChildNodes) { sorted.Add(child.Attributes["name"].Value, child); } Console.WriteLine("Kirapaのコード"); foreach(XmlNode child in sorted.Values) { Console.WriteLine("{0} = {1}", child.Attributes["name"].Value, child.InnerText); } }
とても勉強になりました。 ありがとうございました。
|