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

时间:2013-04-17 04:39:00

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

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

示例XML文件:here

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

我一直在寻找几个小时,说实话,我已经过了头脑。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:3)

为我工作

    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 < / strong>“) 17392 根据您的要求 从那里它下降一级以选择后代(“购买”)并从买入中选择 max 元素。简而言之,它只是遵循树的结构< / p>

答案 1 :(得分:1)

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

答案 2 :(得分:0)

请仔细阅读以下link。详细解释。

对于您的要求,您可以使用contains()方法过滤给定节点的id的特定标签数据。

答案 3 :(得分:0)

我在手机上打字,原谅我的外壳,我看不到XML结构。所以我假设价格的节点叫做priceNode。

var xml = XDocument.Load(URL);

var q = xml.Root.Elements()。First(x =&gt; x.Attributes.Any()&amp;&amp; x.Attribute(“id”)==“17392”)。元素(“PriceNode” “)。Max(n =&gt; n.Value);