c# - 如何在 C# 中轻松排序 XML 文件?

标签 c# c xml

我有给定的 XML:

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

我需要读取 XML 文件,然后对其进行排序以将其用作 C 头文件。

例如:

#define orange        80             // <orange>
#define red           18            // <red>

应该可以更改 XML 标记的顺序。

private void TranslateXmlToC(String path)   
{
    XmlDocument doc = new XmlDocument();
    doc.Load(path);

    XmlNodeList list = doc.SelectNodes("//colors");

    Console.WriteLine(list.Item(0).InnerXml);
}

此代码正确显示了所有标签和数据,但现在我想更改顺序。

最佳答案

这可能对你有用

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 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34722840/

相关文章:

c# - 如何使用带有字符串格式查询的 C# 驱动程序查询 MongoDB?

c# - 仅在 Visual Studio 中访问 win 表单控件会从不同线程引发异常

c - 无法打开包含的文件

c - 这在 C 中意味着什么((TYPE){})。该片段取自 : __typeof__ ( ((TYPE){}). MEMBER )

python - 如何在Python中忽略或传递xpath xml IndexError

c# - 在 C# 程序中使用 .lib 文件

c# - 使用 StringBuilder 编写语句的更简单方法

java - 如何使用控制台输出来调试 pthread 与 JNI 的交互?

java - 发现以元素 'property' 开头的无效内容

javascript - 如何将 XML 反序列化为 JavaScript/TypeScript?