C# для профессионалов. Том II
Шрифт:
// создать и задать атрибуты элемента "book"
newBook.SetAttribute("genre","Mystery");
newBook.SetAttribute("publicationdate", "2001");
newBook.SetAttribute("ISBN", "123456789");
// создать элемент 'title'
XmlElement newTitle=doc.CreateElement("title");
newTitle.InnerText="Case of the Missing Cookie";
newBook.AppendChild(newTitle);
// создать элемент author
XmlElement newAuthor=doc.CreateElement("author");
newBook.AppendChild(newAuthor);
//
создать элемент name
XmlElement newName=doc.CreateElement("name");
newName.InnerText="C. Monster";
newAuthor.AppendChild(newName);
// создать элемент price
XmlElement newPrice=doc.CreateElement("price");
newPrice.InnerText="9.95";
newBook.AppendChild(newPrice);
// добавить элемент 'book' к doc
doc.DocumentElement.AppendChild(newBook);
// записать на диск Note новое имя файла booksEdit.xml
XmlTextWriter tr=new XmlTextWriter("..\\..\\..\\booksEdit.xml", null);
tr.Formatting=Formatting.Indented; doc.WriteContentTo(tr);
tr.Close;
// загрузить заголовок в окно списка
XmlNodeList nodeLst=doc.GetElementsByTagName("title");
foreach(XmlNode node in nodeLst) listBox1.Items.Add(node.InnerText);
}
private void listBox1_SelectedIndexChanged(object sender, System.EventArgs e) {
String srch="newBookstore/book[title='"+ listBox1.SelectedItem.ToString + "']";
XmlNode foundNode=doc.SelectSingleNode(srch);
if (foundNode!=null) MessageBox.Show(foundNode.InnerText);
else MessageBox.Show("Not found");
}
Заметим, что изменились только две начальные строки. Прежде чем сделать
doc.Load
, внесем новые элементы: XmlDeclaration newDoc=doc.CreateXmlDeclaration("1.0", null, null);
doc.AppendChild(newDoc);
XmlElement newRoot=doc.CreateElement("newBookstore");
doc.AppendChild(newRoot);
Сначала создается новый объект
XmlDeclaration
. Параметрами являются версия (в настоящее время всегда "1.0"
), кодировка (null
подразумевает UTF-8
) и, наконец, флаг standalone
. Он может быть yes
или no
, но если вводится null или пустая строка, как в нашем случае, этот атрибут не будет добавляться при сохранении документа. Параметр кодировки должен задаваться строкой, которая является частью класса System.Text.Encoding
, если не используется null
. Следующим создаваемым элементом станет
DocumentElement
. В данном случае мы называем его newBookstore
, чтобы можно было видеть различие. Остальная часть кода является такой же, как и в предыдущем примере, и работает точно так же. Вот файл booksEdit.xml
, создаваемый этим кодом: <?xml version="1.0"?>
<newBookstore>
<book genre="Mystery" publicationdate="2001" ISBN="123456789">
<title>Case of the Missing Cookie</title>
<author>
<name>C. Monster</name>
</author>
<price>9.95</price>
</book>
</newBookstore>
Мы
XmlDocument
или других классов, способствующих созданию модели DOM в .NET. Однако мы видели мощь и гибкость, которые предлагает реализация DOM в .NET. Класс XmlDocument
обычно используется, когда требуется случайный доступ к документу. Используйте классы на основе XmlReader
, когда желательна модель потокового типа. Помните, что гибкость XmlDocument
на основе XmlNode
обеспечивается более высокими требованиями к памяти, поэтому подумайте тщательно о том, какой метод предпочтительнее в конкретной ситуации. XPath и XslTransform
Мы рассмотрим
XPath
и XslTransform
вместе, хотя они являются отдельными пространствами имен на платформе. XPath
содержится в System.Xml.XPath
, a XslTransform
находится в System.Xml.Xsl
. Причина совместного рассмотрения состоит в том, что XPath
, в частности класс XPathNavigator
, предоставляет ориентированный на производительность способ выполнения XSLTransform
в .NET. Для начала рассмотрим XPath
, а затем его использование в классах System.Xsl
. XPath
Пространство имен
XPath
создается для скорости. Оно позволяет только читать документы XML без возможностей редактирования. XPath
создается для поверхностного выполнения быстрых итераций и выбора в документе XML. Функциональность XPath
представляется классом XPathNavigator
. Этот класс может использоваться вместо XmlDocument
, XmlDataDocument
и XPathDocument
. Если требуются средства редактирования, то следует выбрать XmlDocument
; при работе с ADO.NET будет использоваться класс XmlDataDocument
(мы увидим его позже в этой главе). Если имеет значение скорость, то применяйте в качестве хранилища XPathDocument
. Можно расширить XPathNavigator
для таких вещей, как файловая система или реестр в качестве хранилища. В следующей таблице перечислены классы XPath
с кратким описанием назначения каждого класса: Имя класса | Описание |
---|---|
XPathDocument | Представление всего документа XML. Только для чтения. |
XPathNavigator | Предоставляет навигационные возможности для XPathDocument . |
XPathNodeIterator | Обеспечивает итерацию по множеству узлов. Является эквивалентом для множества узлов в Xpath . |
XPathExpression | Компилированное выражение Xpath . Используется SelectNodes , SelectSingleNodes , Evaluate и Matches . |
XPathException | Класс исключений XPath . |
Поделиться:
Популярные книги
Как я строил магическую империю 3
3. Как я строил магическую империю
Фантастика:
попаданцы
постапокалипсис
аниме
фэнтези
5.00
рейтинг книги
Ритуал для призыва профессора
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Невеста снежного демона
Зимний бал в академии
Фантастика:
фэнтези
6.80
рейтинг книги
Прорвемся, опера! Книга 3
3. Опер
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Леди Малиновой пустоши
Любовные романы:
любовно-фантастические романы
6.20
рейтинг книги
Мымра!
1. Мымрики
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Матабар
1. Матабар
Фантастика:
фэнтези
5.00
рейтинг книги
Офицер Красной Армии
2. Командир Красной Армии
Фантастика:
попаданцы
8.51
рейтинг книги

Волхв пятого разряда
2. Ледащий
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Вамп
3. История одного эволюционера
Фантастика:
рпг
городское фэнтези
постапокалипсис
5.00
рейтинг книги
Младший сын князя. Том 3
3. Аналитик
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Шахта Шепчущих Глубин, Том II
3. Виашерон
Фантастика:
фэнтези
7.19
рейтинг книги
Наследник пепла. Книга I
1. Пламя и месть
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Газлайтер. Том 9
9. История Телепата
Фантастика:
фэнтези
попаданцы
5.00