LINQ查询将内容从XML解析为类
我有一个xml,我试图通过LINQ查询提取一些信息。
xml文件的格式如下所示:
Stand1 > Stand2 > Stand1 > Stand3 > Stand4 > . . .
我必须从查询中获取NextItem
和PreviousItem
的属性列表。 为此,我定义了一个类来获得我的结果。
public class Extract { public string name { get; set; } public int _id { get; set; } }
LINQ Query(foreach Sample节点,获取类对象中的PreviousItem和NextItem内容):
var EnumerableContent = from item in XElement.Load("file.xml").Elements("NextItem") select ???...
问题是如何在上面的查询中为每个Sample节点将数据传递给类对象。
。 其次,上面只会得到NextItem节点。 如何为NextItem和PreviousItem编写查询?
编辑总的来说,我必须为每个Sequence
节点获取一个IEnumerable,然后从该查询返回整个IEnumerable。
EDIT2在此分配key
给我这个错误。 查询如下
var mapping = XDocument.Load("file.xml") .Descendants("Sequences") .Select(n => n.Descendants("PreviousItem") .Union(n.Descendants("NextItem")) .Select(n1 => new Extract { _id = (int)n1.Attribute("id"), Name = n1.Value }) ).ToDictionary<IEnumberable
var xDoc = XDocument.Load(....); var result = xDoc.Descendants("NextItem") .Union(xDoc.Descendants("PreviousItem")) .Select(n => new {ID = n.Attribute("id").Value, Name =n.Name, Value =n.Value });
– 编辑 –
var result = XDocument.Load(....) .Descendants("Sequences") .Select(n=> n.Descendants("NextItem") .Union(n.Descendants("PreviousItem")) .Select(n2 => new { ID = n2.Attribute("id").Value, Name = n2.Name, Value = n2.Value }) );
我不确定我是否理解了这个问题,但您可以轻松地将LINQ中的元素/属性值转换为XML select
语句:
var EnumerableContent = from item in XElement.Load("file.xml").Elements("NextItem") select new Extract() { name = item.Value, _id = (int)item.Attribute("id") }
嗨,我认为这是你所期待的。
上述就是C#学习教程:LINQ查询将内容从XML解析为类分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
List lstXElements = new List (); lstXElements.AddRange(GetDescendants("NextItem")); lstXElements.AddRange(GetDescendants("PreviousItem")); List lstExtract = new List (); foreach (XElement objElement in lstXElements) { Extract objExtract = new Extract(); objExtract._id = Convert.ToInt32(objElement.Attribute("id").Value); objExtract.name = (objElement.Name).LocalName; lstExtract.Add(objExtract); } List GetDescendants(string strDescentName) { return ((XDocument.Load(Server.MapPath("XMLFile1.xml")) .Descendants(strDescentName)) ).ToList (); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1034164.html