2010-10-28 2 views
2

У меня есть XML от Я хочу, чтобы получить некоторые данныеПроблемы с извлечением данных из XML с помощью LINQ

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")); 

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

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

Вот это 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> 

ответ

2
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
+0

Извините, я добавил очень важное значение для своего xml. Это всего лишь кусок этого большого xml, и мне не так важно знать это:/ – user278618

+0

Обновлен мой ответ на работу с обновленным XML. – Donut

1

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

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

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

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

+0

Извините, я добавил очень важное значение в свой xml. Это всего лишь кусок этого большого xml, и я не так важен для вас, чтобы это знать:/ – user278618

+0

Нет проблем, это нормально, мы не в вашем коде, поэтому мы не знаем все. Я просто надеюсь, что некоторые из ответов помогут вам. – Hal

1

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

 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>(); 
+0

Извините, я добавил очень важное значение для своего xml. Это всего лишь кусок этого большого xml, и я не так важен для вас, чтобы это знать: / – user278618

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