使用 Linq 从在线 XML 文件中读取数据
Posted
技术标签:
【中文标题】使用 Linq 从在线 XML 文件中读取数据【英文标题】:Use Linq to read data from an online XML file 【发布时间】:2013-04-09 17:13:34 【问题描述】:我一直在寻找一种从 C# 中的 XML 文件中读取特定数据的方法。
示例 XML 文件:here。
我正在尝试创建一个方法,给定一个 id 属性(例如“17392”,参见示例),可以返回该特定类型 id 的最高购买价格。
我已经找了几个小时了,老实说,我已经不知所措了。任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:为我工作
XDocument xdoc = XDocument.Load(@"MyFile.xml");
var lv1s = from lv1 in xdoc.Descendants("type")
.Where(l => (string) l.Attribute("id") == "17392")
.Descendants("buy")
select (string)lv1.Element("max");
string Result = "";
foreach (var lv1 in lv1s)
Result = lv1.ToString();
说明:它首先加载xml文件,然后循环遍历其后代(“type”),其中其属性(“id") 是 17392 根据您的要求 并从那里向下一层选择后代(“buy”),然后从buy中选择max元素。简而言之,它只是遵循树的结构
【讨论】:
它有效,谢谢。我完全不知道如何,但它仍然有效,谢谢。【参考方案2】:您可以将HttpClient
与 LINQ to XML 一起使用:
string url = "...";
var client = new HttpClient();
string xml = client.GetStringAsync(url).Result;
var result = XDocument.Parse(xml).Descendants("type")
.Where(e => (string) e.Attribute("id") == "17392")
.Descendants("buy")
.Select(e => (string) e.Element("max"))
.FirstOrDefault();
【讨论】:
看起来 System.Net.Http 不再包含在 .NET 中。有什么方法可以添加吗? @Serendipity:您使用的是哪个版本的 .NET? @Cuolong Le:我使用的是 .NET 版本 4【参考方案3】:请通过以下link。详细解释。
根据您的要求,您可以使用 contains() 方法过滤具有给节点的 id 的特定标签数据。
【讨论】:
【参考方案4】:我正在手机上打字,请原谅我的外壳,我看不到 XML 结构。所以我假设带有价格的节点称为priceNode。
var xml = XDocument.Load(URL);
var q = xml.Root.Elements().First(x=> x.Attributes.Any() && x.Attribute("id") =="17392").Elements("PriceNode").Max (n=> n.值);
【讨论】:
以上是关于使用 Linq 从在线 XML 文件中读取数据的主要内容,如果未能解决你的问题,请参考以下文章