Чтение онлайн

на главную - закладки

Жанры

C++. Сборник рецептов

Когсуэлл Джефф

Шрифт:

);

}

} else if (!parsingAnimal_) {

// Мы только что встретили новое животное

if (localname == animal) {

parsingAnimal_ = true; // Обновить состояние

// анализа.

animalList_.push_back(Animal); // Добавить в список объект

// Animal.

} else {

//
Неправильная вложенность

throw runtime error(

string("expected 'animal', got ") + toNative(localname)

);

}

} else {

// Вы находимся в середине анализа элемента, описывающего

// животного.

if (parsingAnimalChild_) {

// Неправильная вложенность

throw runtime_error("bad animal element");

}

// Обновить состояние анализа

parsingAnimalChild_ = true;

// Пусть startAnimalChild выполнит реальную работу

startAnimalChild(uri, localname, qname, attrs);

}

 }

 void endElement(

const XMLCh *const uri, // uri пространства имен

const XMLCh *const localname, // простое имя тега

const XMLCh *const qname ) // квалифицированное имя тега

 {

static XercesString animalList = fromNative("animal-list");

static XercesString animal = fromNative("animal");

// Обновить флаги parsingAnimalList, parsingAnimal_

// и parsingAnimalChild_; делегировать основную работу

// endAnimalChild

if (localname == animal) {

parsingAnimal_ = false;

} else if (localname == animalList) {

parsingAnimalList_ = false;

} else {

endAnimalChild(uri, localname, qname);

parsingAnimalChild_ = false;

}

 }

 // Получает уведомления о встрече символьных данных

 void characters(const XMLCh* const chars, const unsigned int length) {

// Добавляет символы в конец currentText_ для обработки
методом

// endAnimalChild

currentText.append(chars, length);

 }

private:

 // Если текущий элемент представляет ветеринара или дрессировщика,

 // используйте attrs для конструирования объекта Contact для

 // текущего Animal; в противном случае очистите currentText_,

 // подготавливая обратный вызов characters

 void startAnimalChild(

const XMLCh *const uri, // uri пространства имен

const XMLCh *const localname, // простое имя тега

const XMLCh *const qname, // квалифицированное имя тега

const Attributes &attrs ) // Набор атрибутов

 {

static XercesString vet = fromNative("veterinarian");

static XercesString trainer = fromNative("trainer");

Animal& animal = animalList_.back;

if (localname == vet) {

// Мы встретили элемент "ветеринар".

animal.setVeterinarian(contactFromAttributes(attrs));

} else if (localname == trainer) {

// Мы встретили элемент "дрессировщик".

animal.setTrainer(contactFromAttributes(attrs));

} else {

// Мы встретили элемент "кличка , "вид" или

// "дата рождения". Его содержимое будет передано функцией

// обратного вызова characters.

currentText_.clear;

}

 }

 // Если текущий элемент представляет кличку, вид или дату рождения,

 // используйте текст, находящийся в currentText_, для установки

 // соответствующего свойства текущего объекта

 Animal. void endAnimalChild(

const XMLCh *const uri, // uri пространства имен

const XMLCh *const localname, // простое имя тега

const XMLCh *const qname) // квалифицированное имя тега

 {

static XercesString name = fromNative("name");

static XercesString species = fromNative("species");

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

Пипец Котенку! 2

Майерс Александр
2. РОС: Пипец Котенку!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Пипец Котенку! 2

70 Рублей - 2. Здравствуй S-T-I-K-S

Кожевников Павел
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
постапокалипсис
5.00
рейтинг книги
70 Рублей - 2. Здравствуй S-T-I-K-S

Два лика Ирэн

Ром Полина
Любовные романы:
любовно-фантастические романы
6.08
рейтинг книги
Два лика Ирэн

Сумеречный Стрелок 3

Карелин Сергей Витальевич
3. Сумеречный стрелок
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Сумеречный Стрелок 3

Невеста вне отбора

Самсонова Наталья
Любовные романы:
любовно-фантастические романы
7.33
рейтинг книги
Невеста вне отбора

Жизнь в подарок

Седой Василий
2. Калейдоскоп
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Жизнь в подарок

По машинам! Танкист из будущего

Корчевский Юрий Григорьевич
1. Я из СМЕРШа
Фантастика:
боевая фантастика
попаданцы
альтернативная история
6.36
рейтинг книги
По машинам! Танкист из будущего

Новый Рал 2

Северный Лис
2. Рал!
Фантастика:
фэнтези
7.62
рейтинг книги
Новый Рал 2

Аргумент барона Бронина 2

Ковальчук Олег Валентинович
2. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 2

Эволюционер из трущоб. Том 5

Панарин Антон
5. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 5

Миф об идеальном мужчине

Устинова Татьяна Витальевна
Детективы:
прочие детективы
9.23
рейтинг книги
Миф об идеальном мужчине

Возвышение Меркурия. Книга 2

Кронос Александр
2. Меркурий
Фантастика:
фэнтези
5.00
рейтинг книги
Возвышение Меркурия. Книга 2

Неудержимый. Книга XXII

Боярский Андрей
22. Неудержимый
Фантастика:
попаданцы
фэнтези
5.00
рейтинг книги
Неудержимый. Книга XXII

Шлейф сандала

Лерн Анна
Фантастика:
фэнтези
6.00
рейтинг книги
Шлейф сандала