我一直在寻找一种从C#中读取XML文件中特定数据的方法。
示例XML文件:here。
我正在尝试创建一个方法,给定一个id属性(例如“17392”,参见示例),可以返回该特定类型id的最大购买价格。
我一直在寻找几个小时,说实话,我已经过了头脑。任何帮助表示赞赏。
答案 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);