我有一个XmlDocument和一个对象列表,这些对象封装了XmlElement的子代的名称和值。基本上,列表包含XmlElement的复合键。 我找不到通过“复合键”或LINQ中的表达式获取XmlElement的正确XPath。
Xml文档是这样的:
<Document>
<ITEM>
<HEADER>
<No>1</No>
<Description>Item 1</Description>
</HEADER>
</ITEM>
<ITEM>
<HEADER>
<No>2</No>
<Description>Item 2</Description>
</HEADER>
</ITEM>
</Document>
如果键列表是这样的(c#中的列表):
Keys= {
{Tag: "No", Value: "1"},
{Tag: "Description", Value: "Item 1"}
}
我要获取第一个“ HEADER”元素。
答案 0 :(得分:0)
使用xml linq:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
Dictionary<int, string> dict = doc.Descendants("HEADER")
.GroupBy(x => (int)x.Element("No"), y => (string)y.Element("Description"))
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
}
}
}