2012-06-21 3 views
0

Прочитайте код и совет, какие изменения необходимо выполнить, чтобы получить ожидаемый результат. Код выбора псевдо.Прочитать xml с использованием Linq для XML

XML:

<?xml version='1.0' encoding='Cp1252' ?> 
<RESULTS> 
    <ROW> 
     <COLUMN NAME="ID"><![CDATA[1234]]></COLUMN> 
     <COLUMN NAME="FName"><![CDATA[Joe]]></COLUMN> 
     <COLUMN NAME="LName"><![CDATA[Doe]]></COLUMN> 
    </ROW> 
    <ROW> 
     <COLUMN NAME="ID"><![CDATA[5678]]></COLUMN> 
     <COLUMN NAME="FName"><![CDATA[Jill]]></COLUMN> 
     <COLUMN NAME="LName"><![CDATA[Martin]]></COLUMN> 
    </ROW> 
</RESULTS> 

код:

static void Main(string[] args) 
{  
    XDocument doc = XDocument.Load("C:\\test.xml"); 
    var query = from headrow in doc.Descendants("ROW") 
       from COLUMN in headrow.Descendants("COLUMN") 
       select new 
       { 
        ID = COLUMN.Element where (string)COLUMN.Attribute== "ID", 
        FName = COLUMN.Element where (string)COLUMN.Attribute== "FName", 
        LName = COLUMN.Element where (string)COLUMN.Attribute== "LName" 
       }; 


    foreach (var result in query) 
    {  
     Console.WriteLine(result);    
    }  
} 

Exprected выход
1234 Джо Доу
5678 Джилл Мартин

заранее спасибо

ответ

1

Посмотреть, пожалуйста, если:

var query = from headrow in doc.Descendants("ROW") 
      select new 
      { 
       ID = headrow.Elements("COLUMN").First(c => c.Attribute("NAME").Value == "ID").Value, 
       FName = headrow.Elements("COLUMN").First (c => c.Attribute("NAME").Value == "FName").Value, 
       LName = headrow.Elements("COLUMN").First (c => c.Attribute("NAME").Value == "LName").Value 
      }; 

foreach (var result in query) 
{  
    Console.WriteLine("{0} {1} {2}", result.ID, result.FName, result.LName);     
}  
+0

Действительно! Спасибо, сэр. – user219628

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