<Dictrionary> 
  <A> 
    <Dic name="Awa" /> 
    <Dic name="Ac" /> 
    <Dic name="Aa" /> 
  </A> 
  <B> 
    <Dic name="Bz" /> 
    <Dic name="Bc"  /> 
    <Dic name="Ba"  /> 
  </B> 
.... 
</Dictrionary> 使它们按照,name属性按字母排序。我的代码是参照网上的,不知道对不对!
我的代码是参照网上的,不知道对不对!
我的代码是参照网上的,不知道对不对!
我的代码是参照网上的,不知道对不对!
我的代码是参照网上的,不知道对不对!
XmlDocument doc = new XmlDocument();
doc.Load(@"customers.xml");
//创建导航器   
XPathNavigator nav = doc.CreateNavigator();XPathExpression exp = nav.Compile("/Dictrionary/A");
 
exp.AddSort("Dic", XmlSortOrder.Descending, XmlCaseOrder.None, "", XmlDataType.Text);XPathNodeIterator iter = nav.Select(exp);
//循环迭代对象   
while (iter.MoveNext())
{
    XPathNavigator copy = iter.Current.Clone();  
    copy.MoveToFirstChild();
    copy.MoveToNext();
    copy.MoveToNext(); }   

解决方案 »

  1.   

    排序完,保存xml文件。
    排序完,保存xml文件。
    排序完,保存xml文件。
    排序完,保存xml文件。
    排序完,保存xml文件。
    排序完,保存xml文件。
    排序完,保存xml文件。
    排序完,保存xml文件。
    排序完,保存xml文件。
    排序完,保存xml文件。
    排序完,保存xml文件。
      

  2.   

    呵呵.
    提供个方法,不过好像很烦
    1:把xml读成dataset,用dataview就行排序,
    2:把排序的dataset  WriteXMl()
    就可以了!
      

  3.   

    <?xml version="1.0" standalone="yes"?>
    <DocumentElement>
      <Dic name="Aa" />
      <Dic name="Ac" />
      <Dic name="Awa" />
      <Dic name="Ba" />
      <Dic name="Bc" />
      <Dic name="Bz" />
    </DocumentElement>按dataSet后,字母没了!!!!!!
      

  4.   

    http://topic.csdn.net/u/20080603/10/619cc1d0-5f45-4f5f-93f8-2d6c5d4d717b.html
    这还有分。解决后一并送上。
      

  5.   

    已经给了你代码了
    自己调试下就可以了啊你最后想要什么结果??
    A和B是否需要排序???看一下如下代码如果不符合你的要求
    把你的要求说的详细些
    贴出来你排序后想要的结果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());//排序后的状态上面的例子只是对A下面的Dic节点的Name属性排序!!!
      

  6.   

    http://www.cnblogs.com/sunsonbaby/archive/2004/09/01/38635.html
      

  7.   

    我最后的结果,是想把那个xml文件。排序!
    我最后的结果,是想把那个xml文件。排序!
    我最后的结果,是想把那个xml文件。排序!
    我最后的结果,是想把那个xml文件。排序!
      

  8.   

              XmlDocument doc = new XmlDocument(); 
                doc.Load(@"D:\Project\C#Test\WindowsApplication1\WindowsApplication3\Config.xml"); 
                XmlNodeList nodeList = doc.SelectNodes("/Dictrionary/*/*");             List <XmlElement> list = new List <XmlElement>(); 
                foreach (XmlElement el in nodeList) 
                { 
                    list.Add(el); 
                }             list.Sort(new sort());             XmlNode node = doc.SelectSingleNode("/Dictrionary"); 
                int index = 0; 
                foreach (XmlNode n in node.ChildNodes) 
                {                 int count = n.ChildNodes.Count; 
                    n.RemoveAll();                 for (int j = index; j < list.Count; j++) 
                    { 
                        n.AppendChild(list[j]); 
                        index++; 
                        if (index == count) 
                            break; 
                    } 
                } 
                doc.Save(@"D:\Project\C#Test\WindowsApplication1\WindowsApplication3\Config.xml"); 
          public class sort : IComparer <XmlElement> 
            { 
                #region IComparer <XmlNode> Members             public int Compare(XmlElement x, XmlElement y) 
                { 
                    return string.Compare(x.Attributes[0].Value, y.Attributes[0].Value); 
                }             #endregion 
            } 
    帮你顶下。
      

  9.   

    给你个完整的
    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);
      

  10.   

    ericzhangbo1982111能给讲解一下吗?
      

  11.   

    哈哈,我不知道这样能不能排序....
    大概意思就是
    取得
      <Dic name="Aa" /> 
      <Dic name="Ac" /> 
      <Dic name="Awa" /> 
      <Dic name="Ba" /> 
      <Dic name="Bc" /> 
      <Dic name="Bz" /> 
    这些数据
    然后排序以下然后再找到
    <Dictrionary> 
      <A> 
        <Dic name="Awa" /> 
        <Dic name="Ac" /> 
        <Dic name="Aa" /> 
      </A> 
      <B> 
        <Dic name="Bz" /> 
        <Dic name="Bc"  /> 
        <Dic name="Ba"  /> 
      </B> 
    </Dictrionary> 
    下面的a 和b 节点
    按照它们的count 添加排序好的节点其实14楼的方法很好