C# для профессионалов. Том II | страница 16



> newBook.SetAttribute("publicationdate", "2001");

> newBook.SetAttricute("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="С. Monster";

> newAuthor.AppendChild(newName);

> // создать новый элемент price

> XmlElement newPrice=doc.CreateElement("price");

> newPrice.innerText="9.95";

> newBook.AppendChild(newPrice);

> // добавить к текущему документу

> doc.DocumenElement.AppendChild(newBook);

> // записать doc на диск

> XmlTextWriter tr=new XmlTextWriter("..\\..\\..\\booksEdit.xml", null);

> tr.Formatting=Formatting.Indented;

> doc.WriteContentTo(tr);

> tr.Close();

> // загрузить listBox1 со всеми заголовками, включая новый

> 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="bookstore/book[title='" + listBox1.SelectedItem.ToString() + "']";

> XmlNode foundNode=doc.SelectSingleNode(srch);

> if (foundNode!=null) MessageBox.Show(foundNode.InnerText);

> else MessageBox.Show("Not found");

>}

При выполнении этого кода будет получена функциональность предыдущего примера, но в окне списка появилась одна дополнительная книга "The Case of Missing Cookie". Щелчок мыши на заголовке этой книги приведет к выводу такой же информации, как и для других книг. Анализируя код, можно увидеть, что это достаточно простой процесс. Прежде всего создается новый элемент >book:

>XmlElement newBook = doc.CreateElement("book);

Метод >CreateElement имеет три перегружаемые версии, которые позволяют определить имя элемента, имя и пространство имен URI, и, наконец, >prefix (префикс), >lоcalname (локальное имя) и >namespace (пространство имен). Когда элемент создан, необходимо добавить атрибуты

>newBook.setAttribute("genre", "Mystery");

>newBook.SetAttribute("publicationdate", "2001");

>newBook.SetAttribute("ISBN", "123456789");

Напомним, что класс >XmlAttribute расширяет класс >XmlNode, поэтому нам доступны все свойства и методы >XmlNode. Даже если имеется очень сложная структура, то при ее размещении никаких проблем возникать не должно.

Теперь, когда атрибуты созданы и необходимо добавить другие элементы книги: