[英]Get a specific value in an xml document with c#
我想在URL的XML文檔中獲取一個特定值,我設法獲取了所有值的列表,但是我不確定如何選擇特定值。 XML文檔如下:
<evec_api version="2.0" method="marketstat_xml">
<marketstat>
<type id="37">
<buy>
<volume>291092912</volume>
<avg>137.11</avg>
<max>156.06</max>
<min>53.46</min>
<stddev>31.00</stddev>
<median>140.28</median>
<percentile>156.05</percentile>
</buy>
<sell>
<volume>273042044</volume>
<avg>177.43</avg>
<max>339.00</max>
<min>166.22</min>
<stddev>30.83</stddev>
<median>170.38</median>
<percentile>166.26</percentile>
</sell>
<all>
<volume>574134956</volume>
<avg>154.64</avg>
<max>339.00</max>
<min>43.00</min>
<stddev>42.21</stddev>
<median>156.05</median>
<percentile>69.98</percentile>
</all>
</type>
</marketstat>
</evec_api>
我想要的特定值為最低賣出價格,即166.22。 目前,我的代碼只是檢索文檔中的所有值是
private void Form1_Load(object sender, EventArgs e)
{
string xmlDocPath = "http://api.eve-central.com/api/marketstat?typeid=37®ionlimit=10000002&usesystem=30000142";
XmlTextReader xmlReader = new XmlTextReader(xmlDocPath);
while (xmlReader.Read())
{
if (xmlReader.NodeType == XmlNodeType.Text)
{
textBox1.AppendText(xmlReader.Value + "\n");
}
}
}
我嘗試了幾種不同的方法,例如將其全部扔到文本框中並采用特定的行,但這似乎是一個非常愚蠢的解決方案。 大多數教程使用控制台,但是不適用於我。 我覺得這可能是一個簡單的解決方案,但是我還沒有找到一個可行的解決方案。 此外,對此尚不陌生,如果此代碼效率低下,請隨時指出。
嘗試使用LINQ to XML ,這非常簡單。 示例如下:
var doc = XDocument.Parse(xml); //use XDocument.Load if you have path to a file
string minSell = doc.Descendants("sell")
.First()
.Element("min")
.Value;
Console.WriteLine(minSell); //prints 166.22
如果將XmlTextReader包裝到XmlDocument中 ,則可以對其執行XPath查詢,以檢索您感興趣的特定節點 :
var doc = new XmlDocument(xmlReader);
doc.Load();
var xpath = "/marketstat/type [@id='37']/sell/min";
var myNode = doc.SelectSingleNode(xpath);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.