LINQ to XML获取XElement值
我遇到了从LINQ到XML查询返回一些值的问题。 我从SOAP Web服务获取XML并通过它并将其解析为XDocument进行查询
XML:
0 Success true Garden Waste Collection Service RR3 GDN TueFort2 Tuesday 01/04/2014 Recycling Collection Service RR8 REC TueFort2 Tuesday 01/04/2014 Refuse Collection Service RR8 REF TueFort1 Tuesday 08/04/2014 Garden Waste Collection Service RR3 GDN TueFort2 Tuesday 15/04/2014 Recycling Collection Service RR8 REC TueFort2 Tuesday 15/04/2014 Refuse Collection Service RR8 REF TueFort1 Tuesday 22/04/2014
CS代码:
using (var reader = new StreamReader(response.GetResponseStream())) { string xmlString = reader.ReadToEnd(); XDocument xmlDoc = XDocument.Parse(xmlString); var collections = (from p in xmlDoc.Descendants() where p.Name.LocalName == "Collection" select p); var test = xmlDoc.Descendants("Collection").Select( x => new { day = x.Element("Day").Value, date = x.Element("Date").Value }); Debug.WriteLine("STOP HERE"); var test2 = (from p in xmlDoc.Descendants() where p.Name.LocalName == "Collection" select new{ day = p.Element("Day").Value, date = p.Element("Date").Value }); }
上面的集合var给出了一个节点列表,但是test和test2 var没有得到我的子元素。
任何帮助赞赏!
这就是令你头痛的原因:
xmlns="https://webservices.whitespacews.com/"
这是为元素及其后代设置默认命名空间 – 因此您需要查找本地名称为Collections
和该命名空间的元素。 同样是其他元素。 幸运的是,LINQ to XML为您提供了便利:
XNamespace ns = "https://webservices.whitespacews.com/"; ... var test = xmlDoc.Descendants(ns + "Collection") .Select(x => new { day = x.Element(ns + "Day").Value, date = x.Element(ns + "Date").Value });
我怀疑你的test2
集合会有元素,但因为它无法找到Day
和Date
元素,所以获取Value
属性将导致NullReferenceException
。
另请注意,您无需创建自己的阅读器等。我会将您的代码编写为:
上述就是C#学习教程:LINQ to XML获取XElement值分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
XNamespace ns = "https://webservices.whitespacews.com/"; XDocument doc; using (var stream = response.GetResponseStream()) { doc = XDocument.Load(stream); } var query = xmlDoc.Descendants(ns + "Collection") .Select(x => new { Day = x.Element(ns + "Day").Value, Date = x.Element(ns + "Date").Value });
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1027596.html