110,533
社区成员
发帖
与我相关
我的任务
分享
string xmlPath = "e:\\2.xml";
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(xmlPath);
XPathDocument pathdoc = new XPathDocument(xmlPath);
XmlNodeList ndoes = xmldoc.DocumentElement.ChildNodes;
foreach (XmlNode node in ndoes)
{
XPathNavigator nav = pathdoc.CreateNavigator();
string xpath = String.Format("/Dictrionary/{0}/Dic", node.Name);
XPathExpression exp = nav.Compile(xpath);
exp.AddSort("@name", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Text);
XPathNodeIterator nodeIter = nav.Select(exp);
node.RemoveAll();
while (nodeIter.MoveNext())
{
XmlElement xe = xmldoc.CreateElement("Dic");
xe.SetAttribute("name", nodeIter.Current.GetAttribute("name", ""));
node.AppendChild(xe);
}
}
xmldoc.Save(xmlPath);
StringBuilder unsorted = new StringBuilder();
StringBuilder sorted = new StringBuilder();
XPathDocument doc = new XPathDocument("e:\\2.xml"); //这里改成你自己的文件
XPathNavigator nav = doc.CreateNavigator();
string xpath = "/Dictrionary/A/Dic";
XPathNodeIterator nodeIter1 = nav.Select(xpath);
while (nodeIter1.MoveNext())
{
unsorted.Append(nodeIter1.Current.GetAttribute("name", "") + "\n");
}
Console.WriteLine(unsorted.ToString());//排序之前的状态
XPathExpression exp = nav.Compile(xpath);
exp.AddSort("@name", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Text);
XPathNodeIterator nodeIter2 = nav.Select(exp);
while (nodeIter2.MoveNext())
{
sorted.Append(nodeIter2.Current.GetAttribute("name", "") + "\n");
}
Console.WriteLine(sorted.ToString());//排序后的状态