【发布时间】:2013-06-04 09:13:09
【问题描述】:
我想在一个 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");
}
}
}
我尝试了几种不同的方法,例如将其全部放入文本框中并获取特定的行,但这似乎是一个非常愚蠢的解决方案。大多数教程都使用控制台,但这对我不起作用。我觉得这可能是一个简单的解决方案,但我还没有找到一个有效的解决方案。另外,由于对此相当陌生,如果此代码有任何非常低效的地方,请随时指出。
【问题讨论】:
-
您使用
XmlTextReader的任何原因?如果您将整个文档加载到一个 LINQ to XMLXDocument中,您的生活将会简单得多。此外,您应该将“处理 XML 的代码”与“处理结果的代码”区分开来——仅仅因为某些示例代码使用控制台并不意味着它对您没有用;您应该从中提取特定于 XML 的代码并按照您的意愿使用它。 -
尝试寻找“解析 xml”google.co.uk/… 甚至这里 stackoverflow.com/questions/6442024/… 的方法