2015-11-18 56 views
0

我試圖從這個XML中獲取'max'買賣元素來跟蹤tyeID;XML數據沒有跟蹤ID,因此應該輸入更多條目。

這裏是我使用的代碼;該XML是一個鏈接(見下文)

 private void JitaOrePrices() 
    { 
     ListViewItem itm; 

     //listview settings. 
     listView1_Jita.View = View.Details; 
     listView1_Jita.GridLines = true; 
     listView1_Jita.FullRowSelect = true; 

     //convert to string. 
     string string1 = "http://api.eve-central.com/api/marketstat?typeid=34& 
     minQ=1&typeid=35&minQ=1&typeid=36&minQ=1&typeid=37&minQ=1&typeid=38& 
     minQ=1&typeid=39&minQ=1&typeid=40&minQ=1&typeid=11399&minQ=1& 
     typeid=27029&minQ=1&usesystem=30000142"; 

     // add colums to put into. 
     listView1_Jita.Columns.Add("Type", 35); 
     listView1_Jita.Columns.Add("(B)", 43); 
     listView1_Jita.Columns.Add("(S)", 43); 

     //set arrays to put into. 
     string[] arr = new string[3]; 

     XElement xdoco = XElement.Load(string1); 
     XmlDocument doco = new XmlDocument(); 
     doco.Load(string1);    
     XmlNodeList Blist = doco.SelectNodes("/evec_api/marketstat/type"); 
     XmlNodeList Clist = doco.SelectNodes("/evec_api/marketstat/type/buy"); 
     XmlNodeList Dlist = doco.SelectNodes("/evec_api/marketstat/type/sell"); 
     foreach (XmlNode xnod in Blist)   
      foreach (XmlElement znod in Clist) 
       foreach (XmlElement dnod in Dlist) 
     { 
      if (xnod.Attributes["id"] != null) 
       arr[0] = xnod.Attributes["id"].InnerText; 
       arr[1] = znod.SelectSingleNode("max").InnerText; 
       arr[2] = dnod.SelectSingleNode("max").InnerText; 

       itm = new ListViewItem(arr); 
      itm.Font = new Font("Tahima", 9); 
      listView1_Jita.Items.Add(itm);   
     } 


    } 

發生了什麼? - 它採取了最大的賣出價格和買入價值,並制定了一個更大的清單,然後預期,我希望它只返回每個ID號碼的2個值。

XML看起來像這樣;

http://api.eve-central.com/api/marketstat?typeid=34&minQ=1&typeid=35&minQ=1&typeid=36&minQ=1&typeid=37&minQ=1&typeid=38&minQ=1&typeid=39&minQ=1&typeid=40&minQ=1&typeid=11399&minQ=1&typeid=27029&minQ=1&usesystem=30000142

只是櫃面我不是explaing自己很好(講了很多次)的例子是,

類型| (B)|(S)

34 | 6.32 | 19.00

35 | 11.53 | 22.32

這裏是正在發生的事情:

enter image description here

回答

1

在foreach是不正確的。

通過

foreach (XmlNode xnod in Blist) 
    { 
     XmlNode buyNode = xnod.SelectSingleNode("buy")); 
     XmlNode sellNode = xnod.SelectSingleNode("sell")); 

     if (xnod.Attributes["id"] != null) 
     { 
      arr[0] = xnod.Attributes["id"].InnerText; 
      arr[1] = buyNode.SelectSingleNode("max").InnerText; 
      arr[2] = sellNode.SelectSingleNode("max").InnerText; 
     } 

     itm = new ListViewItem(arr); 
     itm.Font = new Font("Tahima", 9); 
     listView1_Jita.Items.Add(itm); 
    }  
+0

都能跟得上,這是返回一個錯誤「不能隱式類型‘systen.xml.xmlnode’通過的XmlNode爲buyNode轉換爲‘systen.xml.xmlelement’ – Losec

+0

我有更新,替換型的XmlElement更換並出售節點 – ArDumez

+0

新錯誤「{」對象引用未設置爲對象的實例。「}」on line「arr [1] = znod.SelectSingleNode(」max「)。InnerText;」 – Losec