1

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&regionlimit=10000002&usesystem=30000142";
    XmlTextReader xmlReader = new XmlTextReader(xmlDocPath);
    while (xmlReader.Read())
    {
        if (xmlReader.NodeType == XmlNodeType.Text)
        {
            textBox1.AppendText(xmlReader.Value + "\n");
        }               
    }
}

テキストボックスにすべてを投げて特定の行を取るなど、いくつかの異なる方法を試しましたが、それは本当にばかげた解決策のようです. チュートリアルのほとんどはコンソールを使用していますが、それは私にとってはうまくいきません。おそらく簡単な解決策だと思いますが、まだうまくいくものを見つけていません。また、これはかなり新しいので、このコードについて非常に非効率的なことがあれば、遠慮なく指摘してください。

4

2 に答える 2

2

その XmlTextReader をXmlDocumentにラップすると、XPath クエリを実行して、関心のある特定のノードを取得できます。

var doc = new XmlDocument(xmlReader);
doc.Load();
var xpath = "/marketstat/type [@id='37']/sell/min";
var myNode = doc.SelectSingleNode(xpath);
于 2013-06-04T09:21:11.250 に答える