使用Linq从在线XML文件中读取数据

本文关键字:读取 数据 文件 XML Linq 在线 使用 | 更新日期: 2023-09-27 18:09:47

我一直在寻找一种在c#中从XML文件读取特定数据的方法。

示例XML文件:here.

我试图使一个方法,给定一个id属性(如"17392",见示例),可以返回该特定类型id的最大购买价格。

我已经找了几个小时了,老实说,我已经不知所措了。

使用Linq从在线XML文件中读取数据

为我工作

    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);