Predavatelj: Mike Taulty, Developer and Platform Group Microsoft UK
LINQ to XML je “DOM like” API, kar pomeni, da nalozi celotno XML drevo v pomnilnik in ga nato maniplira. Dela tako s celimi dokumenti kot s fragmenti. Dva kljucna razreda sta XElement in XAttribute.
Kreiranje
XElement root = new XElement("root"); XElement child = new XElement("child"); XAttribute attr = new XAttribute("attr", 104,5m); root.Add(child); root.Add(attr);
Branje
XElement.Load(); XDocument.Load();
Obe metodi podpirata branje iz URL-ja, XmlReader-ja, TextReader-ja. XElement ima več metod za navigacijo po “oseh”:
XElement.Descendants(); XElement.Ancestors();
LINQ pozna dva načina izvajanja poizvedb: del za delom (nad razredi, ki implementirajo IEnumerable) in vse v enem kosu (nad razredi, ki implementirajo IQueryable). LINQ to XML uporablja prvega (del za delom). Podpira vse lastnosti LINQ-a, kot so uporaba metod, kot je Distinct(), group by, join in podobno.
XElement data = XElement.Load(fileName); var query = from c in data.Descendants("custmer") select (string) c.Attribute("id");
Spreminjanje
XML drevo ni samo za branje. XElement ima cel kup zanimivih metod, ki pridejo zelo prav pri manipuliranju drevesa:
XElement.Add(); XElement.Remove(); XElement.ReplaceWith(); XElement.AddBeforeSelf(); XElement.AddAfterSelf(); XElement.RemoveAttributes(); XElement.RemoveNodes();
Visual Basic ima še boljšo podporo za XML, saj je XML postal del jezika. VB sedaj tako pozna “XML literals”. Le ti omogočajo, pisanje kode, kot je ta:
Dim root = <root>
<child>Value</child>
</root>
Za boljšo podporo pri delu z velikimi XML dokumenti obstaja razred XStreamingElement.
Delo s shemami
Validacijo drevesa v XElement-u in XDocument-u lahko izvedemo s pomočjo metode .Validate.
XmlSchema schema = LoadSchema("file.xsd");
customers.Validate(schema, ValidationErrorHandler);
Oznake in dogodki (Annotations and events)
XML drevo lahko označimo s poljubnim objektom. Prav tako lahko s pomočjo “event handler”-jev zaznavamo spremembe v drevesu.
Povezave:


