<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;
Следует учесть, что файл должен быть валидным, т. е. не содержать ошибок. Например все теги должны быть правильным образом закрыты ( или ) и так далее.
После открытия файла мы находимся в его корне, поэтому элемент
TiXmlElement *xml_level = 0;
xml_level = xml_file->FirstChildElement("level");
Функция FirstChildElement(имя_элемента) возвращает указатель на первый дочерний элемент объекта xml_file. Элемент
TiXmlElement *xml_entity = 0;
xml_entity = xml_level->FirstChildElement("entity");
Поскольку элементов
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/.
