我正在.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 的整数列表和具有所有值的字符串列表。任何帮助将不胜感激。
在此先感谢您的帮助。
我建议您将项目转换为字典:
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];
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();
只是为了创建不同的解决方案 - 这个解决方案只执行一次 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" }