Вход/Регистрация
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
.

  • Читать дальше
  • 1
  • ...
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: