2010-07-29 3 views
1

Итак, я решил использовать XDocument для создания XML-файла, который отлично работал, пока не наткнулся на часть, где мне нужно найти все выбранные элементы в ListBox , Я не уверен, как я должен отформатировать это.Xdocument пытается создать файл XML, столкнувшись с проблемой ListBox

 XDocument xmlDoc = new XDocument(
        new XDeclaration("1.0", "utf-8", "yes"), 
        new XComment("Created: " + DateTime.Now.ToString()), 
        new XElement("Trip", 
         new XElement("TripDetails", 
          new XElement("Departure", txtDeparture.Text), 
          new XElement("Return", txtReturn.Text),      
          new XElement("Purpose", txtPurpose.Text), 
          new XElement("Region", ddlRegion.SelectedValue.ToString()), 
    //Not working        
          new XElement("Countries", 
          foreach(string x in lstCountry.SelectedValue) 
          { 
           new XElement("Country",x); 
          } 
          ) 
         ) 
         ) 
         ); 

Я хочу вывести каждую выбранную страну в дочерних узлах под странах

ответ

1

LINQ к XML действительно хорошо в этом отношении - если вы предоставите его итератор части контента, он будет перебирать. Попробуйте это:

XDocument xmlDoc = new XDocument(
     new XDeclaration("1.0", "utf-8", "yes"), 
     new XComment("Created: " + DateTime.Now.ToString()), 
     new XElement("Trip", 
      new XElement("TripDetails", 
       new XElement("Departure", txtDeparture.Text), 
       new XElement("Return", txtReturn.Text),      
       new XElement("Purpose", txtPurpose.Text), 
       new XElement("Region", ddlRegion.SelectedValue.ToString()), 
       new XElement("Countries", 
        lstCountry.SelectedValues 
           .Cast<string>() 
           .Select(x => new XElement("Country", x)) 
      ) 
     ) 
    ); 

Обратите внимание, что я изменил SelectedValue к SelectedValues, чтобы получить несколько значений. Если это не то, что вы хотите, вы, надеюсь, сможете его соответствующим образом скорректировать.

+1

большое спасибо, но ListBox не содержит определения для selectedValues. Не знаю, как тянуть несколько значений. – Spooks

+1

получил это для работы, получив выделенныеИндексы и не требующие лимита новый XElement («Страны», lstCountry.GetSelectedIndices() .Выберите (x => новый XElement («Страна», x) ) еще раз спасибо – Spooks

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