C# для профессионалов. Том II | страница 14
>XmlElement | Расширяет >XmlLinkedNode . Объект элемента XML. |
>XmlEntity | Расширяет >XmlNode . Синтаксически разобранный или неразобранный узел сущности. |
>XmlEntityReferenceNode | Расширяет >XmlLinkedNode . Представляет ссылочный узел сущности |
>XmlNotation | Расширяет >XmlNode . Содержит нотацию, объявленную в DTD или в схеме. |
>XmlProcessingInstruction | Расширяет >XmlLinkedNode . Содержит инструкцию обработки XML. |
>XmlSignificantWhitespace | Расширяет >XmlCharacterData . Представляет узел с разделителем. Узлы создаются, только если флаг >PreserveWhiteSpace задан как >true . |
>XmlWhitespace | Расширяет >XmlCharacterData . Представляет разделитель в содержимом элемента. Узлы создаются, только если флаг >PreserveWhiteSpace задан как >true . |
>XmlText | Расширяет >XmlCharacterData . Текстовое содержимое элемента или атрибута. |
Как можно видеть .NET делает доступным класс, соответствующий почти любому типу XML. Мы не будем рассматривать каждый класс подробно, но разберем несколько примеров. Вот как выглядит диаграмма наследования:
Первый пример будет создавать объект >XmlDocument
, загружать документ с диска и загружать окно списка с данными из элементов >title
. Это аналогично одному из примеров, которые были выполнены в разделе >XmlReader
. Отличие заключается в том, что осуществляется выбор, с какими узлами мы хотим работать, вместо того чтобы использовать весь документ. Вот код для выполнения этого в среде >XmlNode
. Посмотрите, как просто он выглядит при сравнении (файл можно найти в папке >DOMSample1
загруженного архива):
>private void button1_Click(object sender. System.EventArgs e) {
> // doc объявлен на уровне модуля
> // изменить путь доступа в соответствии со структурой путей доступа
> doc.Load("..\\..\\..\\books.xml")
> // получить только те узлы, которые нужны
> XmlNodeList nodeLst=doc.GetElementsByTagName("title");
> // итерации по списку XmlNodeList
> foreach(XmlNode node in nodeLst) listBox1.Items.Add(node, InnerText);
>}
Обратите внимание, что мы добавили следующее объявление на уровне модуля:
>private XmlDocument doc=new XmlDocument();
Если бы это было все, что нужно делать, то использование >XmlReader
было бы значительно более эффективным способом загрузки окна списка. Причина в том, что мы прошли через документ один раз и затем закончили с ним работу. Однако, если желательно повторно посетить узел, то использование >XmlDocument
является лучшим для этого способом. Слегка расширим пример (новая версия находится в