簡體   English   中英

C#-在字典列表框中顯示XML文件中的數據

[英]C# - Displaying data from an XML file in a listbox from a Dictionary

我有一個包含數據的XML文件,我只想在一頁上顯示組織的,而在另一頁上顯示相應的數據(地址,ID)。 在文本框中。

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);來顯示名稱。

任何幫助,將不勝感激!

我對您發布的代碼進行了兩項更改。 1)我向Organization添加了一個沒有參數的構造函數,以簡化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; } } } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM