C# для профессионалов. Том II - [7]
>XmlNode
является абстрактным классом, который представляет узел документа XML. >XmlNodeList
является упорядоченным списком узлов. Это живой список узлов, и любые изменения в любом узле немедленно отражаются в списке. >XmlNodeList
поддерживает индексный доступ или итеративный доступ. Эти два класса составляют основу реализации DOM на платформе .NET. Вот список классов, которые основываются на >XmlNode
.Имя класса | Описание |
---|---|
>XmlLinkedNode | Расширяет >XmlNode . Возвращает узел непосредственно перед или после текущего узла. Добавляет свойства >NextSibling и >PreviousSibling в >XmlNode . |
>XmlDocument | Расширяет >XmlNode . Представляет весь документ. Реализует спецификации DOM Level 1 и Level 2. |
>XmlAttribute | Расширяет >XmlNode . Объект атрибута объекта >XmlElement . |
>XmlCDataSection | Расширяет >XmlCharacterData . Объект, который представляет раздел документа >CData . |
>XmlCharacterData | Абстрактный класс, который предоставляет методы манипуляции с текстом для других классов. Расширяет >XmlLinkedNode . |
>XmlComment | Расширяет >XmlCharacterData . Представляет объект комментария XML. |
>XmlDeclaration | Расширяет >XmlLinkedNode . Представляет узел объявления (> ) |
>XmlDocumentFragment | Расширяет >XmlNode . Представляет фрагмент дерева документа. |
>XmlDocumentType | Расширяет >XmlLinkedNode . Данные, связанные с объявлением типа документа. |
>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
является лучшим для этого способом. Слегка расширим пример (новая версия находится в >DOMSample2
):
>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 void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) {
> // создать строку поиска XPath
> string srch="bookstore/book[title='" + listBox1.SelectedItem.ToString() + "']";
> // поиск дополнительных данных
> XmlNode foundNode=doc.SelectSingleNode(srch);
> if (foundNode!=null) MessageBox.Show(foundNode.InnerText);
> else MessageBox.Show("Not found");
>}
В этом примере >listbox
с заголовками загружается из документа >books.xml
. Когда мы щелкаем на окне списка, вызывая порождение события >SelectedIndexChange
(не забудьте добавить код, присоединяющий обработчик событий в функцию >InitializeComponent
), мы берем текст выбранного пункта в >listbox
, в данном случае заголовок книги, создаем оператор XPath и передаем его в метод >SelectSingleNode
объекта >doc
. Он возвращает элемент >book
, частью которого является title (foundNode). Выведем для наглядности InnerText узла в окне сообщения. Мы можем продолжать щелкать на элементах в
Java Enterprise Edition (Java EE) остается одной из ведущих технологий и платформ на основе Java. Данная книга представляет собой логичное пошаговое руководство, в котором подробно описаны многие спецификации и эталонные реализации Java EE 7. Работа с ними продемонстрирована на практических примерах. В этом фундаментальном издании также используется новейшая версия инструмента GlassFish, предназначенного для развертывания и администрирования примеров кода. Книга написана ведущим специалистом по обработке запросов на спецификацию Java EE, членом наблюдательного совета организации Java Community Process (JCP)
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Это практическое руководство разработчика программного обеспечения на Visual Basic .NET и ADO.NET, предназначенное для создания приложений баз данных на основе WinForms, Web-форм и Web-служб. В книге описываются практические способы решения задач доступа к данным, с которыми сталкиваются разработчики на Visual Basic .NET в своей повседневной деятельности. Книга начинается с основных сведений о создании баз данных, использовании языка структурированных запросов SQL и системы управления базами данных Microsoft SQL Server 2000.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Embedded system software. General requirements for development and documentationСтандарт подготовлен в развитие ГОСТ Р ИСО/МЭК 12207-99 «Информационная технология. Процессы жизненного цикла программных средств» с целью учета специфики разработки и документирования программного обеспечения встроенных систем реального времени.
«Как пасти котов» – это книга о лидерстве и руководстве, о том, как первое совмещать со вторым. Это, если хотите, словарь трудных случаев управления IT-проектами. Программист подобен кошке, которая гуляет сама по себе. Так уж исторически сложилось. Именно поэтому так непросто быть руководителем команды разработчиков. Даже если вы еще месяц назад были блестящим и дисциплинированным программистом и вдруг оказались в роли менеджера, вряд ли вы знаете, с чего надо начать, какой выбрать стиль руководства, как нанимать и увольнять сотрудников, проводить совещания, добиваться своевременного выполнения задач.