2013-10-30 25 views
0

我是新來的XML和C#。我想從XML文件中加載一個包含特定項目的下拉列表。我想填寫cityname = City1(Person1,Person2,Person3和Person4)的所有人員。問題在於,所有人都顯示在單行上的下拉框中,而不是每行上的一個人。將XML加載到下拉列表中C#

請幫我

這裏是我的XML:

<country> 
    <city> 
    <cityname>City1</cityname> 
    <citynr>111</citynr> 
    <person> 
     <name>Person1</name> 
     <name>Person2</name> 
     <name>Person3</name> 
     <name>Person4</name> 
    </person> 
    <major> 
     <firstname>Major1firstname</firstname> 
     <lastname>Major1lastname</lastname> 
    </major> 
    </city> 

    <city> 
    <cityname>City2</cityname> 
    <citynr>222</citynr> 
    <person> 
     <name>Person5</name> 
     <name>Person6</name> 
     <name>Person7</name> 
     <name>Person8</name> 
    </person> 

    <major> 
     <firstname>Major2firstname</firstname> 
     <lastname>Major2firstname</lastname> 
    </major> 
    </city> 
</country> 

我的代碼:

XElement country = XElement.Load(Server.MapPath("myXML.xml")); 

XElement city = (
    from p in country.Elements("city") 
    where p.Element("cityname").Value == "City1" 
    select p 
).First();     

dropDownList.Items.Add(city.Element("person").Value); 
+1

試試這一個:http://stackoverflow.com/questions/5959257/populating-dropdown-from-the-xml-in -c-sharp – gypsyCoder

+0

其實你要添加一個項目:dropDownList.Items.Add(city.Element(「person」)。Value); – gypsyCoder

回答

0

MSDN documentation about XElement.Value

獲取或設置級聯此元素的文本內容。

你應該根據自己的XML結構做些什麼:

XElement persons = city.Element("person"); 
foreach (XElement person in persons.Elements("name")) 
{ 
    dropDownList.Items.Add(person.Value); 
} 
+0

謝謝,但我不明白。第二行中的人名是什麼? – user2939293

+0

你是指名爲_persons_的變量,還是你的意思是字符串參數_「name」_? – elgonzo

+0

我的意思是人在person.Elements(「名稱」) – user2939293