Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Linq从联机XML文件读取数据_C#_Xml Parsing_Linq To Xml - Fatal编程技术网

C# 使用Linq从联机XML文件读取数据

C# 使用Linq从联机XML文件读取数据,c#,xml-parsing,linq-to-xml,C#,Xml Parsing,Linq To Xml,我一直在寻找一种从C语言的XML文件中读取特定数据的方法 示例XML文件: 我试图创建一个方法,在给定id属性(如17392)的情况下,请参见示例,该方法可以返回特定类型id的最大购买价格 我已经找了好几个小时了,老实说,我已经不知所措了。非常感谢您的帮助。请仔细阅读以下内容。详细解释 根据您的要求,您可以使用contains方法过滤特定标记数据,并将id提供给节点。请执行以下操作。详细解释 根据您的要求,您可以使用contains方法过滤特定标记数据,并将id提供给节点。您可以与LINQ to

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

示例XML文件:

我试图创建一个方法,在给定id属性(如17392)的情况下,请参见示例,该方法可以返回特定类型id的最大购买价格


我已经找了好几个小时了,老实说,我已经不知所措了。非常感谢您的帮助。

请仔细阅读以下内容。详细解释


根据您的要求,您可以使用contains方法过滤特定标记数据,并将id提供给节点。

请执行以下操作。详细解释

根据您的要求,您可以使用contains方法过滤特定标记数据,并将id提供给节点。

您可以与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();
您可以将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();

我在电话上打字,所以请原谅我的大小写,我看不到XML结构。所以我假设有价格的节点叫做priceNode

var xml=XDocument.LoadURL


var q=xml.Root.Elements.Firstx=>x.Attributes.Any&&x.Attributeid==17392.ElementsPriceNode.Maxn=>n.Value

我在电话上打字,所以请原谅我的大小写,我看不到XML结构。所以我假设有价格的节点叫做priceNode

var xml=XDocument.LoadURL

var q=xml.Root.Elements.Firstx=>x.Attributes.Any&&x.Attributeid==17392.ElementsPriceNode.Maxn=>n.Value

为我工作

    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元素。简言之,它只遵循您为我工作的树的结构

    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
从这一点开始,它向下一级选择Substands buy,然后从buy中选择max元素。简而言之,它只是遵循树的结构

看起来System.Net.Http不再包含在.Net中。有什么方法可以添加它吗?@Serendipity:您使用的是.NET的哪个版本?@Cuolong Le:我使用的是.NET版本4。看起来.NET中不再包含System.NET.Http。有什么方法可以添加它吗?@Serendipity:你使用的是哪个版本的.NET?@Cuolong Le:我使用的是.NET版本4它可以工作,谢谢。我完全不知道它是怎么工作的,但不管怎样,谢谢。它工作了,谢谢。我完全不知道它是如何工作的,但不管怎样,谢谢。