Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
4
Добавлен:
02.03.2016
Размер:
183.41 Кб
Скачать

4.3.2. Обробка xml у пам’яті

Заснована на потоках обробка XML забезпечує мінімальні накладні витрати, але також володіє мінімальної гнучкістю. На багато зручнішою є обробка XML в пам'яті. На жаль, єдиного стандартного підходу до такої обробки не існує.

Всі перераховані нижче класи дозволяють працювати із XML - файлом у пам’яті.

1) XmlDocument. Клас XmlDocument реалізує повний інтерфейс XML DOM Level 2 Core, як він визначений W3C. Це найбільш стандартизований інтерфейс для роботи із даними XML, але місцями є не зовсім зручним.

2) XpathNavigator. Як і XmlDocument, клас XpathNavigator зберігає XML- документ цілком в пам'яті. Однак він забезпечує трохи швидшу і прямолінійну модель, ніж XML DOM, поряд з розширеними засобами пошуку. На відміну від XmlDocument, в ньому не передбачена можливість внесення і збереження змін.

3) XDocument. Клас XDocument пропонує ще більш інтуїтивно зрозумілий і ефективний API-інтерфейс для взаємодії з XML. Формально він являє собою частину LINQ to XML, але зручний і в тому випадку, коли запити LINQ не використовуються. Однак через новизну XDocument повинен працювати спільно з більш старими класами .NET XML для вирішення таких задач, як перевірка дійсності. Також XDocument не підтримує веб-елемент управління Xml, який дозволяє більш просто відображати XML на веб-сторінці.

XmlDocument

Розглянемо перший підхід. Основними класами при цьому підході є:

Клас

Призначення

XmlNode

Представляє окремий вузол

XmlLinkedNode

Представляє впорядковану колекцію вузлів

XmlDeclaration

Представляє рядок декларації

XmlComment

Представляє коментар

XmlAttribute

Представляє атрибут

XmlElement

Представляє елемент

XmlDocument

Представляє XML-документ

XmlTextReader

Представляє засіб зчитування із файлів даних стандарту XML

XmlTextWriter

Представляє засіб запису у файли даних стандарту XML

Класи XmlNode та XmlLinkedNode

Ці класи є базовими для класів XmlDeclaration, XmlComment, XmlDocument, XmlElement. Абстрактний клас XmlNode представляє окремий вузол XML-документа. Серед членів цього класу відмітимо тільки наступні:

Елемент класу XmlNode

Призначення

public virtual XmlAttributeCollection Attributes { get; }

Повертає атрибути даного вузла у вигляді екземпляру колекції XmlAttributeCollection.

public virtual XmlNodeList ChildNodes { get;}

Повертає всі дочірні вузли для даного.

public virtual XmlNode FirstChild { get; }

Повертає перший дочірній вузол для даного вузла.

public virtual XmlNode LastChild { get; }

Повертає останній дочірній вузол для даного вузла.

public virtual string InnerText { get; set; }

Повертає або задає вміст даного вузла.

public virtual string InnerXml { get; set; }

Повертає або задає розмітку, яка представляє дочірні вузли даного вузла.

public virtual XmlNode AppendChild(XmlNode newChild);

Додає вказаний вузол у список дочірніх вузлів даного вузла.

public virtual XmlNode InsertAfter(XmlNode newChild, XmlNode refChild);

Вставляє заданий вузол newChild зразу після даного вузла refChild.

public virtual XmlNode InsertBefore(XmlNode newChild, XmlNode refChild);

Вставляє заданий вузол newChild зразу перед даним вузлом refChild.

public virtual void RemoveAll();

Видаляє всі дочірні вузли і (або) атрибути поточного вузла.

public virtual XmlNode RemoveChild(XmlNode oldChild);

Видаляє вказаний дочірній вузол.

public virtual XmlNode ReplaceChild(XmlNode newChild, XmlNode oldChild);

Замінює дочірній вузол oldChild на вузол newChild.

Абстрактний клас XmlLinkedNode є похідним від класу XmlNode та представляє XML-документ у вигляді впорядкованої колекції його вузлів. У цьому класі перевизначено всього дві успадковані властивості:

Елемент класу XmlLinkedNode

Призначення

public override XmlNode NextSibling { get; }

Повертає наступний вузол у колекції після поточного.

public override XmlNode PreviousSibling { get; }

Повертає попередній вузол у колекції перед поточним.

Соседние файлы в папке веб-програмування - 1