Проблема с извлечением данных из xml по linq - PullRequest
2 голосов
/ 28 октября 2010

У меня есть xml, я хочу получить данные

XDocument loaded = XDocument.Load(@"c:\TERC.xml");


        var query = (from c in loaded.Descendants("catalog")
                 from r in c.Descendants("row")
                 select (string)r.Element("Name"));

это возвращает мне коллекцию null

Как я могу это исправить?

Вот этот xml:

<?xml version="1.0" encoding="UTF-8" ?> 
 <teryt>
 <catalog name="Compix">
 <row>
    <col name="NAME">Name1</col> 
    <col name="ID">12</col> 
    </row>
 <row>
    <col name="NAME">Name2</col> 
    <col name="ID">13</col> 
    </row>
 <row>
    <col name="NAME">Name3</col> 
    <col name="ID">14</col> 
    </row>  
</catalog>
</teryt>

Ответы [ 3 ]

2 голосов
/ 28 октября 2010
List<string> query = (from c in loaded.Descendants("catalog")
                      from r in c.Descendants("row")
                      from col in r.Descendants("col").Where(col1 => 
                         col1.Attribute(XName.Get("name")).Value == "NAME")
                      select col.Value).ToList();

После выполнения указанного выше оператора query содержит следующие строки:

  • Name1
  • Name2
  • Name3
1 голос
/ 28 октября 2010

Имя - это атрибут элемента col, значение которого требуется указать, эта часть отсутствовала в запросе.

        var query = (from c in loaded.Descendants("catalog")
                     from r in c.Descendants("row")
                     from col in r.Descendants("col")
                     select (string)r.Value).ToList<string>();
1 голос
/ 28 октября 2010

Вы можете попробовать это:

var query = (from c in loaded.Descendants("catalog")
                     from r in c.Descendants("row")
                     select (string)r.Value);

Я предполагаю, что вы хотите получить данные внутри узла "col". В противном случае, пожалуйста, уточните, что вы хотите получить.

Надеюсь, это поможет.

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