Импорт данных из файла XML в строки - PullRequest
0 голосов
/ 31 января 2012

Я искал ответ в течение 24 часов, но не нашел его. Я новичок в C #. Я нашел учебник, откуда я использовал этот код:

XDocument loadedCustomData = XDocument.Load("PeopleCustom.xml");
var filteredData = from c in loadedCustomData.Descendants("Person")
                           where c.Attribute("Age").Value == current.ToString()
                           select new Person
                           {
                               FirstName = (string)c.Attribute("FirstName").Value,
                           };

listBox1.ItemsSource = filteredData;
public class Person
    {
        string firstname;
        string lastname;
        int age;

        public string FirstName
        {
            get { return firstname; }
            set { firstname = value; }
        }

        public string LastName
        {
            get { return lastname; }
            set { lastname = value; }
        }


        public int Age
        {
            get { return age; }
            set { age = value; }
        }


    }

XML выглядит так:

<People>
<Person
   FirstName="Kate"
   LastName="Smith"
   Age="1" />
<Person 
       ...
               />
</People>

Работает, но выводит весь вывод в список. Я хочу строки. Я пытался получить строку из списка (например, listBox1.Items [0] .ToString ();), но все, что я получил, это что-то вроде этого: ProjectName.MainPage + Person. Я также пытался получить его из фильтрованных данных, но безуспешно. Есть ли способ получить данные из XML в строки? Заранее благодарю за ответ

Ответы [ 2 ]

1 голос
/ 31 января 2012

этот код

XDocument loadedCustomData = XDocument.Load("PeopleCustom.xml");
var filteredData = from c in loadedCustomData.Descendants("Person")
                           where c.Attribute("Age").Value == current.ToString()
                           select new Person
                           {
                               FirstName = (string)c.Attribute("FirstName").Value,
                           };

создает список объектов Person: select New Person{.....}

Если вы хотите получить список строк с именем Person, то все вытеперь нужно изменить объект, который создает LINQ ....

select (string)c.Attribute("FirstName").Value );

теперь он создает новую строку из атрибута FirstName.

после запуска этого linq,в основном у вас будет объект linq, который выдаст список строк.если вы хотите список, то измените его следующим образом:

XDocument loadedCustomData = XDocument.Load("PeopleCustom.xml");
var filteredData =( from c in loadedCustomData.Descendants("Person")
                           where c.Attribute("Age").Value == current.ToString()
                           select (string)c.Attribute("FirstName").Value ).ToList();

, если вы хотите первую строку в списке ...

filterdData.First();
0 голосов
/ 31 января 2012

Из выходных данных, которые вы получаете, listBox1.items содержит личные объекты, поэтому вы можете попробовать

var name = ((Person)listBox1.Items[0]).FirstName;

, это должно дать вам значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...