在.NET中从XML文档中筛选元素的最简单方法 [英] Easiest way to filter elements out of an XML document in .NET
本文介绍了在.NET中从XML文档中筛选元素的最简单方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
假设我有以下文档
<sets version="2.0">
<setting>
<id>set1</id>
<value>80</value>
<label>EVersion</label>
<type>Val</type>
<format>R</format>
<bits>
<addr>0</addr>
<startBit>0</startBit>
<bitWidth>8</bitWidth>
</bitspec>
</setting>
<setting>
<id>set3</id>
<value>50</value>
<label>GVersion</label>
<type>Bin</type>
<format>R</format>
<bits>
<addr>0</addr>
<startBit>0</startBit>
<bitWidth>8</bitWidth>
</bitspec>
</setting>
</sets>
我只想要ID和值元素-
and I just want the ID and value elements -
<sets version="2.0">
<setting>
<id>set1</id>
<value>80</value>
</setting>
<setting>
<id>set3</id>
<value>50</value>
</setting>
</sets>
如何使用XDocument和LINQ仅选择这些?
How could I select just these using XDocument and LINQ?
推荐答案
使用linq-to-xml,以下代码:
Use linq-to-xml, the following code:
var xml_str = @"<sets version=""2.0"">
<setting>
<id>set1</id>
<value>80</value>
<label>EVersion</label>
<type>Val</type>
<format>R</format>
<bits>
<addr>0</addr>
<startBit>0</startBit>
<bitWidth>8</bitWidth>
</bits>
</setting>
<setting>
<id>set3</id>
<value>50</value>
<label>GVersion</label>
<type>Bin</type>
<format>R</format>
<bits>
<addr>0</addr>
<startBit>0</startBit>
<bitWidth>8</bitWidth>
</bits>
</setting>
</sets>";
var doc = XDocument.Parse(xml_str);
var settings = new XElement("sets",
from setting in doc.Element("sets").Elements("setting")
select new XElement("setting", setting.Element("id"), setting.Element("value")));
Console.WriteLine(settings);
打印:
<sets>
<setting>
<id>set1</id>
<value>80</value>
</setting>
<setting>
<id>set3</id>
<value>50</value>
</setting>
</sets>
如果不需要转换的XML,而只是说id -> value
映射的字典(将value
存储为int
),则可以执行以下操作:
If you don't need transformed XML, but just, say, dictionary of id -> value
mapping, (storing value
as int
), you could do:
var doc = XDocument.Parse(xml_str);
var settings_dict = doc.Element("sets").Elements("setting").ToDictionary(s => s.Element("id").Value, s => Convert.ToInt32(s.Element("value").Value));
这篇关于在.NET中从XML文档中筛选元素的最简单方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文