Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Основні методи аналізу документа представлені в таблиці нижче.Содержание книги
Поиск на нашем сайте
Приклад 2. Виведення окремих елементів XML-документа Розглянемо використання методу ReadElementString() і інших методів, а також використання файлових потоків (читання з файлу). Не забути підключити using System.IO; Додамо на форму кнопку Read from file. Код обробника буде наступним:
private void btmReadXml2_Click(object sender, EventArgs e) { //читання лише назв книг (елемент "TITLE" richTextBox1.Clear(); FileStream fs = new FileStream("book2.xml", FileMode.Open); XmlReader rdr = XmlReader.Create(fs); while (!rdr.EOF) { //Якщо потрапляємо на тип елементу, перевірити його і завантажити у вікно if (rdr.MoveToContent() == XmlNodeType.Element && rdr.Name == "TITLE") { richTextBox1.AppendText(rdr.ReadElementString() + "\r\n"); } else { // інакше - переміститися на наступний запис
rdr.Read(); }
} }
В цьому прикладі в циклі while використовується метод MoveToContent() для пошуку вузла типа XmlNodeType. Element з назвою книги rdr.Name == "TITLE")
if (rdr.MoveToContent() == XmlNodeType.Element && rdr.Name == "TITLE") Перегляд виконується до кінця файлу (умова циклу while (!rdr.EOF)
Якщо типом вузла не є елемент або його ім'я не збігається з "TITLE", то викликається метод Read() для переходу до наступного вузла. Якщо черговий вузол "TITLE" знайдений, його вміст додається у вікно виводу. Таким чином, будуть виведені лише назви книг. Контроль типів даних при читанні Xml-документа Клас XmlReader також дозволяє читати дані із строгим контролем типів. Для цього використовуються методи ReadElementContentAs... ReadElementContentAsDouble(), ReadElementContentAsBoolean() та інші. Далі показано як можна прочитати значення в десятковому форматі і виконати обчислення. У прикладі вибирається значення ціни книги, яке збільшується на 25%. Створимо ще одну кнопку з написом New Price, а в її обробнику напишемо код: private void btnNewPrice_Click(object sender, EventArgs e) { //Обробник кнопки NewPrice - контроль типів richTextBox1.Clear(); XmlReader rdr = XmlReader.Create("book2.xml"); while (rdr.Read()) { if (rdr.NodeType == XmlNodeType.Element) { if (rdr.Name == "PRICE") { decimal price = rdr.ReadElementContentAsDecimal(); richTextBox1.AppendText("Curent Price = "+ price+ "\r\n"); price += price * (decimal)0.25; richTextBox1.AppendText("New Price = " + price + "\r\n\r\n"); } else if (rdr.Name=="TITLE") richTextBox1.AppendText(rdr.ReadElementContentAsString()+"\r\n"); } } rdr.Close(); }
Якщо це значення не може бути перетворене до необхідного типа, збуджується виключення FormatException. Компілюємо і запускаємо на виконання наш проект. В результаті отримуємо повідомлення про помилку. Причина – текст елементу має вигляд:
<PRICE>$10.95</PRICE> Виправимо всі елементи <PRICE> 10.95</PRICE> а документ збережемо під ім'ям ("book3.xml"); В результаті отримаємо:
|
||||||||||||||||||
|
Последнее изменение этой страницы: 2017-02-21; просмотров: 324; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.156 (0.006 с.) |