C# для профессионалов. Том II | страница 18
> doc.AppendChild(newRoot);
> // создать новый элемент 'book'
> XmlElement newBook=doc.CreateElement("book");
> // создать и задать атрибуты элемента "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
, чтобы можно было видеть различие. Остальная часть кода является такой же, как и в предыдущем примере, и работает точно так же. Вот файл