c# - 从 XML 标记 C# LINQ 中提取键值
问题描述
void Main()
{
string xml = @"<root>
<Page1>
<Key_Head>Name1</Key_Head>
<Key_Title>value1</Key_Title>
</Page1>
<Page1>
<Key_Head>Name2</Key_Head>
<Key_Title>value2</Key_Title>
</Page1>
</root>";
var doc1 = XDocument.Parse(xml);
var result = ConvertXmlToDic(doc1.Root);
}
private static List<NameValuePair> ConvertXmlToDic(XElement element)
{
var result =
element
.Elements()
.Select(e => new
{
Name = e.Name.ToString(),
Value = (e.Descendants().Count() == 0)
? e.Value
: ConvertXmlToDic(e).ToString()
})
.ToDictionary(e => e.Name, e => e.Value)
.Select(e => new List<NameValuePair>()
{
new NameValuePair() { Name = e.Key, Value = e.Value }
});
return (List<NameValuePair>)result;
}
如何获取 <Key_Head> Name1 </Key_Head><Key_Title> value1 </Key_Title> 的标签值作为键值。喜欢 (Name1,Value1) 的列表吗?这是我到目前为止所尝试的。
解决方案
您可以简化检索逻辑,Key_Head
如下Key_Title
所示:
private static List<NameValuePair> ConvertXmlToDic(XElement element)
{
var result = element.Elements()
.Select(e => new NameValuePair
{
Name = e.Element("Key_Head").Value,
Value = e.Element("Key_Title").Value
})
.ToList();
return result;
}
输出
名称:名称 1,值:值 1
名称:name2,值:value2
推荐阅读
- python - bwmorph('endpoints') 的 Python 等效项
- matlab - Octave:用 'textscan' 替换 'strread' - 抛出“错误:返回列表中未定义的元素号 4
- python - 将 Python 计算机视觉应用程序打包成可执行文件
- apache-spark - Pyspark删除数组的第一个元素
- javascript - 有没有办法返回谁删除了一条消息(Discord Bot Development)
- python-3.x - Dask - 在 map_partition 调用上返回一个 dask.dataframe
- r - 在 R 的嵌套数据框中查找重复值
- fifo - LRU 页面替换 vs FIFO 页面替换
- json - 翻译和开发人员之间的内部化、工作流程
- java - HashSet 计数比较 Java