我正在用.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的整数列表和一个包含所有值的字符串列表。 任何帮助都会非常感激。
提前感谢您的帮助。
答案 0 :(得分: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];
答案 1 :(得分:1)
提供此内容存储在XML文件中:
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();
答案 2 :(得分: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);
}
的ID
List<int>(4) { 1, 2, 3, 4 }
值
List<string>(4) { "Value1", "Value2", "Value3", "Value4" }