C# 如何在C中轻松地对XML文件进行排序?

C# 如何在C中轻松地对XML文件进行排序?,c#,c,xml,C#,C,Xml,我有给定的XML: <colors> <green>150</green> <red>18</red> <blue>920</blue> <orange>80</orange> <purple>77</purple> </colors> 这段代码显示了所有标记和数据,但现在我想更改顺序。您可以使用XPathforC来获取所需的所有节

我有给定的XML:

<colors>
  <green>150</green>
  <red>18</red>
  <blue>920</blue>
  <orange>80</orange>
  <purple>77</purple>
</colors>

这段代码显示了所有标记和数据,但现在我想更改顺序。

您可以使用XPathforC来获取所需的所有节点/文本。例如,使用XPath可以选择“颜色”下的所有节点


之后,您可以对它们进行排序,然后创建相应的文件,并按照您需要的语法编写它。

这可能适合您

var xml = new XmlDocument();
xml.LoadXml("<colors>" + 
            "<green>150</green>" +
            "<red>18</red>" + 
            "<blue>920</blue>" +
            "<orange>80</orange>" +
            "<purple>77</purple>" +
            "</colors>");

var lst = new Dictionary<string,int>();
foreach (XmlNode n in xml["colors"].ChildNodes)
    lst.Add(n.Name, int.Parse(n.InnerText));

var sb = new StringBuilder();
foreach (KeyValuePair<string, int> n in lst.OrderBy(kvp => kvp.Value))
    sb.AppendFormat("#define {0}   {1}    // <{0}>\n", n.Key, n.Value);

string result = sb.ToString();
结果可能会使用C字符串填充:

#define red   18    // <red>
#define purple   77    // <purple>
#define orange   80    // <orange>
#define green   150    // <green>
#define blue   920    // <blue>

那么为什么使用C标记呢?使用C作为这个工具你想读取xml文件,用C,然后对它排序,用C将它导出为C头,对吗?到目前为止你试过什么?例如,如何读取xml?或者你如何写一个c标题?在问题中修改了我的代码事实上,许多反对票似乎很不公平。这是一个新用户。。。问题并不那么清楚,人们必须把它撕成碎片+我这边1个,重新开始投票。也可以通过以下方式添加c头文件的创建:System.IO.file.writealTextPath+\\headerFile.h,sb;或者:string.Join\n,XDocument.Loadpath.Elementcolors.Elements.OrderBye=>int.Parsee.Value.Selecte=>string.Formatdefine{0}{1}//,e.Name,e。Value@Corak,让这是一个工作的例子,在自己的答案,我一定会投赞成票!这很有魅力@我很高兴能帮助你。欢迎加入!这是一个残酷的开场白,有这么多人投了反对票。警察有时会很快。。。
var xml = new XmlDocument();
xml.LoadXml("<colors>" + 
            "<green>150</green>" +
            "<red>18</red>" + 
            "<blue>920</blue>" +
            "<orange>80</orange>" +
            "<purple>77</purple>" +
            "</colors>");

var lst = new Dictionary<string,int>();
foreach (XmlNode n in xml["colors"].ChildNodes)
    lst.Add(n.Name, int.Parse(n.InnerText));

var sb = new StringBuilder();
foreach (KeyValuePair<string, int> n in lst.OrderBy(kvp => kvp.Value))
    sb.AppendFormat("#define {0}   {1}    // <{0}>\n", n.Key, n.Value);

string result = sb.ToString();
#define red   18    // <red>
#define purple   77    // <purple>
#define orange   80    // <orange>
#define green   150    // <green>
#define blue   920    // <blue>