Обробка XML у пам’яті - Мова XML та документування програм
- XmlDocument. Клас XmlDocument реалізує повний XML DOM Level 2 Core, як визначено W3C. Це найбільш стандартизований інтерфейс до даних XML, але часом також трохи незграбний;
- XpathNavigator. Як і XmlDocument, клас XpathNavigator повністю зберігає XML-документ у пам'яті. Однак він забезпечує трохи більш швидку та прямолінійну модель, ніж XML DOM, поряд із розширеними засобами пошуку. На відміну від XmlDocument, він не передбачає можливості внесення змін та збереження їх;
- XDocument. Клас XDocument пропонує ще більш інтуїтивно зрозумілий та ефективний API для взаємодії з XML. Технічно він є частиною LINQ to XML, але зручний і в тому випадку, якщо ви не конструюєте запити LINQ. Однак через новизну XDocument має працювати у згоді з старішими класами .NET XML для виконання таких завдань, як перевірка достовірності. Деякі класи, які вже протягом тривалого часу, такі як Web-елемент управління Xml, який дозволяє легше відображати XML на Web-сторінці, все ще базуються на XmlDocument, і тому не працюють з XDocument.
XmlDocument також дозволяє модифікувати вміст вузла (наприклад, ви можете змінити властивості XmlNode.Name та XmlNode.Value) та провести більш ґрунтовні зміни, такі як видалення вузла з колекції за допомогою створення нового вузла. Фактично ви можете навіть сконструювати повний документ XML у пам'яті як екземпляр XmlDocument, а потім зберегти його. Щоб зберегти поточний вміст XmlDocument, ви викликаєте метод Save(), вказуючи мале ім'я файлу або готовий потік.
Клас XpathNavigator (що знаходиться в просторі імен System.Xml.XPath) працює подібно до класу XmlDocument. Він завантажує інформацію впам'ять, потім дозволяє вам проходити вузлами. Ключова відмінність у тому, що він застосовує підхід на базі курсору, що дозволяє використовувати такі методи, як MoveToNext() для проходження за даними XML. XPathNavigator може позиціонуватися лише на одному вузлі одночасно. Об'єкт XPathNavigator можна створити з XmlDocument за допомогою методу XmlDocument.CreateNavigator().
Клас XDocument - це модель загального призначення для управління XML, що знаходиться в пам'яті. На відміну від XmlDocument і XPathNavigator він дуже підходить для конструювання вмісту XML. (У порівнянні з ним XmlDocument робить завдання конструювання XML надмірно складним, у той час як XPathNavigator взагалі цього не підтримує.) Якщо потрібно генерувати XML у нелінійній манері, наприклад, якщо ви хочете записати колекцію елементів у кореневий елемент, а потім додати нову інформацію всередину кожного елемента, то вам знадобиться для цього такий клас у пам'яті, як XDocument. Подібно до того, як об'єкт XmlDocument складається з об'єктів XmlNode, XDocument складається з об'єктів XNode. XNode - абстрактний базовий клас. Інші, більш спеціалізовані класи на кшталт XElement, XComment та XText успадковуються від нього. Одна відмінність полягає в тому, що атрибути не трактуються як окремі вузли моделі LINQ to XML. Натомість вони просто є парами "ім'я-значення", прикріпленими до іншого елементу. Тому клас XAttribute не успадковується від XNode. Технічно клас XDocument - частина LINQ. Він знаходиться в просторі імен System.Xml.Linq і є частиною збірки System.Xml.Linq.dll, представленою в
.NET 3.5. Ви повинні додати посилання на цю збірку, щоб використовувати XDocument та пов'язані з ним класи.