2016-05-28 51 views
0

我有一個XML文件,其中包含數據,我只想在一個頁面上顯示組織的名稱並顯示相應的數據(地址,ID )在另一頁上。在文本框中。C# - 從字典中的列表框中顯示XML文件中的數據

XML: 
<Data> 
    <Organisation> 
<Name>Accident Compensation Corporation</Name> 
    <ID> 022 12345678 </ID> 
    <Address> 220 Bunny Street</Address> 
    </Organisation> 

    <Organisation> 
    <Name>Test 2</Name> 
    <Address> 50 Lambton Quay</Address> 
    <ID> 021 8972468739 </ID> 
    </Organisation> 


</Data> 

我把這些數據翻錄到我的C#中,它當前存儲在字典中。在一個單獨的類C#文件中。

public class Organisation 
{ 
    public int id; 
    public string name; 
    public string address; 

    public Organisation(int id, string name, string address) 
    { 
     this.id = id; 
     this.name = name; 
     this.address = address; 
    } 
} 

}

這就是我對加載XML節點,並試圖在列表框中顯示它們。然而,它不能在「嘗試」做到這一點,跳到「抓」顯示「錯誤」

   XmlNodeList names = doc.GetElementsByTagName("Name"); 
       XmlNodeList ids = doc.GetElementsByTagName("ID"); 
       XmlNodeList addresses = doc.GetElementsByTagName("Address"); 





       for (int i = 0; i < names.Count; i++) 
       { 

        Organisation org = new Organisation(int.Parse(ids[i].InnerText), names[i].InnerText, addresses[i].InnerText); 
        Database.data.Add(org); 

       } 

       foreach (Organisation org in Database.data) 
       { 
        directoryBox.Items.Add(org.name); 

       } 
      } 
      catch 
      { 
       Response.Write("ERROR"); 
      } 
     } 
    } 

這是第二頁上的代碼,將其放置在文本框中

if (!IsPostBack) 
     { 
      foreach (Organisation org in Database.data) 
      { 
       if (org.name.Equals(Session["Org"])) 
       { 
        orgLabel.Text = org.name; 
         lastcontractorBox.Text = org.id.ToString(); 
        buildingAddress.Text = org.address; 
       } 
      } 
     } 

的XML因爲我可以使用textbox1.Items.Add(names [i] .InnerText)顯示名稱

任何幫助,將不勝感激!

回答

0

我對發佈的代碼做了兩處更改。 1)我向組織添加了一個沒有參數的構造函數,以使xml linq更簡單。 2)我將ID從一個int更改爲一個字符串,因爲ID的數字中有空格。

我懷疑你的xml有一個命名空間,這可能是你的代碼不工作的原因,所以我讓我的代碼非常健壯,以處理沒有命名空間和具有名稱空間的xml的情況。

using System; 
 
using System.Collections.Generic; 
 
using System.Linq; 
 
using System.Text; 
 
using System.Xml; 
 
using System.Xml.Linq; 
 

 
namespace ConsoleApplication1 
 
{ 
 
    class Program 
 
    { 
 
     static void Main(string[] args) 
 
     { 
 
      string xml = 
 
       "<Data>" + 
 
        "<Organisation>" + 
 
       "<Name>Accident Compensation Corporation</Name>" + 
 
        "<ID> 022 12345678 </ID>" + 
 
        "<Address> 220 Bunny Street</Address>" + 
 
        "</Organisation>" + 
 
        "<Organisation>" + 
 
        "<Name>Test 2</Name>" + 
 
        "<Address> 50 Lambton Quay</Address>" + 
 
        "<ID> 021 8972468739 </ID>" + 
 
        "</Organisation>" + 
 
       "</Data>"; 
 

 
      XElement data = XElement.Parse(xml); 
 

 
      List<Organisation> organizations = new List<Organisation>(); 
 

 
      organizations = data.Descendants().Where(x => x.Name.LocalName == "Organisation").Select(y => new Organisation() 
 
      { 
 
       name = (string)y.Element("Name"), 
 
       address = (string)y.Element("Address"), 
 
       id = (string)y.Element("ID") 
 
      }).ToList(); 
 

 
      
 
     } 
 
    } 
 
    public class Organisation 
 
    { 
 
     public string id; 
 
     public string name; 
 
     public string address; 
 

 
     public Organisation() { } 
 
     public Organisation(string id, string name, string address) 
 
     { 
 
      this.id = id; 
 
      this.name = name; 
 
      this.address = address; 
 
     } 
 
    } 
 
}

相關問題