Читаем C++. Сборник рецептов полностью

   return child->getTextContent();

  }

 }

 return 0;

}

int main() {

 try {

  // Инициализировать Xerces и получить DOMImplementation;

  // указать, что требуется функция загрузки и сохранения (Load and

  // Save - LS)

  XercesInitializer init;

  DOMImplementation* impl =

   DOMImplementationRegistry::getDOMImplementation(fromNative("LS").c_str()

  );

  if (impl == 0) {

   cout << "couldn't create DOM implementation\n";

   return EXIT_FAILURE;

  }

  // Сконструировать DOMBuilder для анализа документа animals.xml.

  DOMPtr parser =

   static_cast(impl)->

    createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS, 0);

  // Подключить пространства имен (они не требуются в этом примере)

  parser->setFeature(XMLUni::fgDOMNamespaces, true);

  // Зарегистрировать обработчик ошибок

  CircusErrorHandler err;

  parser->setErrorHandler(&err);

  // Выполнить синтаксический анализ animals.xml; здесь можно

  // использовать URL вместо имени файла

  DOMDocument* doc =

   parser->parseURI("animals.xml");

  // Найти элемент слона Herby: сначала получить указатель на элемент

  // "animalList".

  DOMElement* animalList = doc->getDocumentElement();

  if (animalList->getTagName() != fromNative("animalList")) {

   cout << "bad document root: "

    << toNative(animalist->getTagName()) << "\n";

   return EXIT_FAILURE;

  }

  // Затем просматривать элементы "animal", пытаясь найти элемент слона

  // Herby.

  DOMNodeList* animals =

   animaIList->getElementsByTagName(fromNative("animal").c_str());

  for (size_t i = 0,

   len = animals->getLength(); i < len; ++i) {

   DOMElement* animal =

    static_cast(animals->item(i));

   const XMLCh* name = getAnimalName(animal);

   if (name != 0 && name == fromNative("Herby")) {

    // Herby найден - удалить его из документа.

    animalList->removeChild(animal);

    animal->release();

    // необязательный оператор.

    break;

   }

  }

  // Сконструировать DOMWriter для сохранения animals.xml.

  DOMPtr writer =

   static cast(impl)->createDOMWriter();

  writer->setErrorHandler(&err);

  // Сохранить animals.xml.

  LocalFileFormatTarget file("animals.xml");

  writer->writeNode(&file, *animalList);

 } catch (const SAXException& e) {

  cout << "xml error: " << toNative(e.getMessage()) << "\n";

  return EXIT_FAILURE;

 } catch (const DOMException& e) {

  cout << "xml error: " << toNative(e.getMessage()) << "\n";

  return EXIT_FAILURE;

 } catch (const exception& e) {

  cout << e.what() << "\n";

  return EXIT_FAILURE;

 }

}

Обсуждение
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных