【问题标题】:Use Linq to read data from an online XML file使用 Linq 从在线 XML 文件中读取数据
【发布时间】:2013-04-09 17:13:34
【问题描述】:

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

示例 XML 文件:here

我正在尝试创建一个方法,给定一个 id 属性(例如“17392”,参见示例),可以返回该特定类型 id 的最高购买价格。

我已经找了几个小时了,老实说,我已经不知所措了。任何帮助表示赞赏。

【问题讨论】:

    标签: c# xml-parsing linq-to-xml


    【解决方案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中选择ma​​x元素。简而言之,它只是遵循树的结构

    【讨论】:

    • 它有效,谢谢。我完全不知道如何,但它仍然有效,谢谢。
    【解决方案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.值);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多