/ / Четене на детайлни елементи чрез C # от xml - c #, xml

Четете детайлни елементи, като използвате C # от xml - c #, xml

Поздрав, Каква е най-добрата практика да прочетете всички атрибути от детайлни елементи чрез идентификационни атрибути, използващи C # в xml файл, изброен надолу.

Благодаря ти,

 <?xml version="1.0" encoding="utf-8"?>
<WinDLN>

<Program ID="1" Name="CIS562" StartDate="9/8/2010 5:50:00 PM" EndDate="9/8/2010 9:15:00 PM" />

<Program ID="2" Name="CIS532" StartDate="10/8/2010 5:50:00 PM" EndDate="10/8/2010 9:15:00 PM" />

<Program ID="3" Name="ECE552" StartDate="6/8/2010 5:50:00 PM" EndDate="6/8/2010 9:15:00 PM" />

</WinDLN>

Отговори:

4 за отговор № 1

Следващото обаждане в LINQ трябва да направи номера:

var attrs =
doc.Descendants("Program").First(prog =>
prog.Attribute("ID").Value == "2").Attributes();

Най- Descendants методът ви дава всички елементи (навсякъде) в XML документа, които са наречени "Програма". Използвайки First, можете да получите първата, която съвпада с някой определен предикат (например има "ИД", равен на "2"). Обърнете внимание, че можете да използвате FirstOrDefault ако искате да получите null когато няма такъв елемент. На последно място, Attributes ви дава набор от всички приписвания на елемента.

Мисля, че ако използвате LINQ за XML, ако предпочитате, ще пишете същия код, когато работите с XML или други източници на данни, така че четенето и писането на кода е лесно (след като научите LINQ).


3 за отговор № 2

Има много начини да го направите, напр. LINQ над XML. Но използването на Xpath определено не е мъртва:

class Program
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
string xml = @"... your xml ";
doc.LoadXml(xml);
// Using SelectNodes with Xpath
XmlNodeList list = doc.SelectNodes("WinDLN/Program[@ID="2"]");
Console.WriteLine(list.Count); // prints 1
list = doc.SelectNodes("WinDLN/Program[@ID]");
Console.WriteLine(list.Count); // prints 3 (selected all IDs)
}
}

Какъв метод ще изберете е най-често въпрос на вкус, изберете API, с който се чувствате най-удобно.