2012-04-24 2 views
0

Я хочу прочитать следующий XML и заполнить знания теги в поле со списком, ItemName тег в текстовом поле, а остальные в полях со списком, а также. Любой образец кода будет очень полезен..NET и чтение XML-файл

<?xml version="1.0" encoding="UTF-8"?> 
<swobs> 
    <item> 
      <knowledge>1</knowledge> 
      <knowledge>2</knowledge> 
      <knowledge>3</knowledge> 
      <knowledge>4</knowledge> 
      <itemname>INS Gator Operator</itemname> 
      <knowhow>1</knowhow> 
      <knowhow>2</knowhow> 
      <knowhow>3</knowhow> 
      <knowhow>4</knowhow> 
      <supervisor>1</supervisor>  
      <supervisor>2</supervisor>  
      <supervisor>3</supervisor>  
      <supervisor>4</supervisor> 
     </item>    
</swobs> 

Если я пытаюсь это:

public void LoadXML() { 
    string myXMLfile = Server.MapPath("~/swobs.xml"); 
    DataSet dssowbs = new DataSet(); 
    try 
    { 
      dssowbs.ReadXml(myXMLfile); 
      DropDownList1.DataSource = dssowbs; 
      DropDownList1.DataValueField = "knowledge"; 
      DropDownList1.DataBind(); 
    } 
    catch (Exception ex) 
    { 
      Response.Write(ex.ToString()); 
    } 
} 

Он выдает ошибку.

+2

Пожалуйста, покажите, что вы пытались – msarchet

+0

Ну, что вы пробовали, и как далеко вы получили? –

+0

Если я попробую это, public void LoadXML() { string myXMLfile = Server.MapPath ("~/swobs.xml"); DataSet dssowbs = new DataSet(); try { dssowbs.ReadXml (myXMLfile); DropDownList1.DataSource = dssowbs; DropDownList1.DataValueField = "знание"; DropDownList1.DataBind(); } catch (Exception ex) { Response.Write (ex.ToString()); } } Он выдает сообщение об ошибке – Rishi

ответ

2

Учитесь любить LINQ ... это, как легко:

private void LoadData() 
     { 
      var allData = XElement.Load("yourdatafile.xml"); 
      this.comboKnowledge.ItemsSource = allData.Descendants("knowledge").Select(x => x.Value); 
      this.textItemName.Text = allData.Descendants("itemname").Select(x => x.Value).SingleOrDefault(); 
      this.comboKnowHow.ItemsSource = allData.Descendants("knowhow").Select(x => x.Value); 
      this.comboSupervisor.ItemsSource = allData.Descendants("supervisor").Select(x => x.Value); 
     } 
+0

Thanks Matt. Почему в нем отображается ошибка «ItemSource». Я не вижу такого метода для Combo. – Rishi

+0

Вы правы - я просто взял этот пример из приложения WPF, но такая же функциональность будет очень хорошо работать в ASP.NET, например: 'DropDownList1.DataSource = allData.Descendants (« знание »). Выберите (x => x.Value); DropDownList1.DataBind(); ' –

+0

Другим вариантом может быть использование XmlDataSource, вот очень полезная ссылка от Microsoft: [link] (http://msdn.microsoft.com/en-us/library/system.web. ui.webcontrols.xmldatasource.xpath.aspx). –

Смежные вопросы