0

我正在.NET 中开发一个应用程序。我有以下格式的 XML 查找表:

<root>
    <item ID="1">Value 1</item>
    <item ID="2">Value 2</item>
    <item ID="3">Value 3</item>
    ...
    <item ID="n">Value n</item>
</root>

我想检索具有所有 ID 的整数列表和具有所有值的字符串列表。任何帮助将不胜感激。

在此先感谢您的帮助。

4

3 回答 3

3

我建议您将项目转换为字典:

var xdoc = XDocument.Load(path_to_xml);
var items = xdoc.Root.Elements()
                .ToDictionary(i => (int)i.Attribute("ID"), i => (string)i);

现在所有 id 都是字典的键,值是值:

var ids = items.Keys;
var values = items.Values;

您可以快速获得任何物品的价值:

string value = items[5];
于 2013-08-05T14:05:38.323 回答
1

Providing this is stored in an XML file:

XElement xe = XElement.Load(file);

List<int> Ids = new List<int>();
Ids = xe.Elements("item").Attributes("ID").Select (x => XmlConvert.ToInt32(x.Value)).Distinct().ToList();

List<string> Values = new List<string>();
Values = xe.Elements("item").Select (x => x.Value).Distinct().ToList();
于 2013-08-05T13:42:11.743 回答
1

只是为了创建不同的解决方案 - 这个解决方案只执行一次 xml 传递,解析值和 id:

var doc = XDocument.Parse("<root><item ID=\"1\">Value1</item><item ID=\"2\">Value2</item><item ID=\"3\">Value3</item><item ID=\"4\">Value4</item></root>");
var IDs = new List<int>();
var Values = new List<string>();
foreach (var x in doc.Element("root").Elements("item").Select(x => new { Value = x.Value, ID = x.Attribute("ID").Value }))
  {
      IDs.Add(Convert.ToInt32(x.ID));
      Values.Add(x.Value);
  }

身份证

List<int>(4) { 1, 2, 3, 4 }

价值观

List<string>(4) { "Value1", "Value2", "Value3", "Value4" }
于 2013-08-05T13:47:23.460 回答