Поздрав, Каква е най-добрата практика да прочетете всички атрибути от детайлни елементи чрез идентификационни атрибути, използващи 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, с който се чувствате най-удобно.