使用Linq从在线XML文件中读取数据
本文关键字:读取 数据 文件 XML Linq 在线 使用 | 更新日期: 2023-09-27 18:09:47
我一直在寻找一种在c#中从XML文件读取特定数据的方法。
示例XML文件:here.
我试图使一个方法,给定一个id属性(如"17392",见示例),可以返回该特定类型id的最大购买价格。
我已经找了几个小时了,老实说,我已经不知所措了。
为我工作
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文件,然后循环遍历它的后代("类型"),其中它的属性("id")是17392根据您的要求然后再下一级选择后代("buy"),然后从buy中选择max元素。简而言之,它只是遵循树的结构
您可以使用HttpClient
与LINQ到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();
请点击以下链接。详细说明
对于您的需求,您可以使用contains()方法来过滤特定的标记数据,并将id给定给节点。
我正在手机上打字,所以请原谅我的大小写,我看不到XML结构。我假设有价格的节点叫做priceNode。
var xml = XDocument.Load(URL);
var q = xml.Root.Elements()。First(x=> x. attributes . any () &&x.Attribute (" id ") = = " 17392 ") . elements("PriceNode")。马克斯(n => n.Value);