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
. Даже если имеется очень сложная структура, то при ее размещении никаких проблем возникать не должно.
Теперь, когда атрибуты созданы и необходимо добавить другие элементы книги: