Работа с файлами в формате XML с помощью библиотеки TinyXML (С++)
Библиотека TinyXML предоставляет программисту очень удобный способ работы с XML. Для примера возьмем такой фрагмент XML-файла:
<level name="Demo Level 1">
<entity class="Car" pos="300,250,300">
<body mass="20" />
</entity>
<entity class="Robot" pos="100,250,100">
</level>
Теперь фрагмент кода на С++, который иллюстрирует работу с TinyXML (предварительно подключив заголовочный файл библиотеки директивой "#include" и внеся строку "tinyxml.lib" в конфигурацию линковщика).
//Открываем XML-файл:
TiXmlDocument *xml_file = new TiXmlDocument("путь_к_файлу");
if(!xml_file->LoadFile())
return false;
Следует учесть, что файл должен быть валидным, т. е. не содержать ошибок. Например все теги должны быть правильным образом закрыты (<body /> или <body></body>) и так далее.
После открытия файла мы находимся в его корне, поэтому элемент <level> будет являться первым дочерним элементом всего файла. Доступ к нему мы можем получить так:
TiXmlElement *xml_level = 0;
xml_level = xml_file->FirstChildElement("level");
Функция FirstChildElement(имя_элемента) возвращает указатель на первый дочерний элемент объекта xml_file. Элемент <level> имеет дочерний элемент <entity>, поэтому доступ к нему мы получим уже через xml_level:
TiXmlElement *xml_entity = 0;
xml_entity = xml_level->FirstChildElement("entity");
Поскольку элементов <entity> у нас несколько, мы можем циклически пройтись по ним используя функцию NextSiblingElement(имя_элемента), которая возвращает указатель на соседний с текущим элемент XML-файла:
while(xml_entity != NULL)
{
//выполняем различные действия
//...
xml_entity = xml_entity->NextSiblingElement("entity");
}
Теперь, когда мы знаем как пройтись по всем элементам XML-файла остается только один важный и нужный момент - атрибуты элемента. Получить их значение (типа const char *) можно так:
//значение атрибута class элемента <entity>
xml_entity->Attribute("class");
//значение атрибута name элемента <level>
xml_level->Attribute("name");
Скачать библиотеку и документацию к ней можно на сайте http://www.grinninglizard.com/tinyxml/.
оценка: 0
автор: simplex
|
комментариев нетСтатьи с похожими тегами ↓
Работа в Киеве, работа в Москве: менеджер, программист, юрист. Горячие вакансии. — Безработных.Нет
Салаты, дессерты, торты, рыбные, мясные, блюда из овощей, птицы, рецепты блюд

Добавить комментарий