【问题标题】:Converting XmlDocument to Dictionary<string, string>将 XmlDocument 转换为 Dictionary<string, string>
【发布时间】:2012-01-21 03:48:23
【问题描述】:

我正在寻找一种使用 Linq 将 XmlDocument 转换为 Dictionary&lt;string, string&gt; 的好方法。

我的 xml 格式如下:

<config>
    <field>value</field>
    <field2>value2</field2>
</config>

我想将其放入字典中,键值对如下所示:

字段,值
字段2,值2

我想我应该使用 Linq 来执行此操作,但我不确定语法。

【问题讨论】:

  • XML 文档或字符串中是否存在单个 节点?

标签: c# xml linq


【解决方案1】:

使用XmlDocument,根据您的问题,您可以使用此方法获取Dictionary&lt;string, string&gt;

string input = @"<config>
    <field>value</field>
    <field2>value2</field2>
</config>";

var xml = new XmlDocument();
xml.LoadXml(input);

var dict = xml.SelectNodes("/config/*")
              .Cast<XmlNode>()
              .ToDictionary(n => n.Name, n => n.InnerText);

如果您可以使用XElement,您可以使用Parse 方法从字符串加载XML,或使用Load 方法从文件加载它。那么这种方法就足够了:

var xml = XElement.Parse(input);
var dict = xml.Elements()
              .ToDictionary(n => n.Name.LocalName, n => n.Value);

【讨论】:

  • +1 因为我比我更喜欢你的方法。你的方法比我的更直接,现在我知道 ToDictionary 调用了。
【解决方案2】:

我不知道它是否更好,但它干净简单..

XElement xdoc = XElement.Load("yourFilePath");
Dictionary<string, string> result = (from element in xdoc.Elements() select new KeyValuePair<string, string>(element.Name.ToString(), element.Value)).ToDictionary(x => x.Key, x => x.Value);

【讨论】:

  • 嗯,linq 就像现在必须知道的技术......这个想法是提供一个非常简短的解决方案,但你可以使用 foreach 语句......
【解决方案3】:

使用 linq 的一种方法如下 使用

创建 XML 文档
XElement xDoc = XElement.Parse("<config><field>value</field><field2>value2</field2</config>");

为简单起见,我将您的 XML sn-p 直接内联到解析中。

然后您可以使用以下内容创建查询

var query = from xEle in xDoc.Descendants()
select new { tag = xEle.Name.LocalName, value = xEle.Value };

然后使用一个简单的 for each 循环将该查询转换为字典。

Dictionary<string, string> dictionary = new Dictionary<string, string>();
foreach (var CurNode in query)
{
    dictionary.Add(CurNode.tag, CurNode.value);
}

【讨论】:

  • +1 表示努力。更直接的方法是使用ToDictionary 方法。请参阅我的回复以获取示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-22
  • 1970-01-01
  • 2021-05-19
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多