| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Работа с XML в C++ |
| Автор: CosmoMan 17.11.2009, 00:43 | ||||
Есть XML файл наподобие такого:
Нужно считывать последовательно в cтруктуру или класс значения в item-ах. Работаю в Visual Studio 2005 или 2008. Парсер tinyxml Вот пример кода из примера для tinyxml:
Как теперь можно получить строку name и значение каждого item-ма ? Пожалуйста, помогите решить эту проблему. |
| Автор: jonie 17.11.2009, 01:56 |
| почитайте доку к парсеру. а я б на вашем месте делал не так, а.. 1) сделать xsd схему для xml-ки 2) натравить на эту схему вот этот парсер http://www.codesynthesis.com/products/xsd/ 3)он выдаст на выходе либо DOM либо SAX типизированный класс, базой для которого будет Xerces C++ (по умолчанию). а далее весь парсинг будет заключаться в работе с "массивом"... |
| Автор: CosmoMan 17.11.2009, 11:51 | ||||
Так и сделал с утра, на свежую голову во всём разобрался. Парсер работает нормально.
Интересно. Это действительно удобно. Попробую. Спасибо. У меня сей час такая проблема. Парсер значения считывает не в юникаде, а в ASCII и, как следсвтвие, русский в виду кркозябин. Тот парсер, что вы рекомендуете, позволяет работать с wchar_t ? |
| Автор: Static 17.11.2009, 12:25 | ||
Это ведь из Вашего файла? TinyXML умеет читать в юникоде, но для этого нужен юникодный xml-файл. |
| Автор: CosmoMan 17.11.2009, 19:49 | ||||
Да, но это я сам написал, что кодировка windows-1251. А как сделать xml-файл юникодным? Мне казалось, что он уже изначально юникодный, главное указать кодировку. |
| Автор: Static 18.11.2009, 09:21 | ||
| CosmoMan Ну в каком-нить текстовом редакторе, типа Notepad++ можно конвертнуть файл в нужную кодировку. И потом написать в начале:
например. Кажется, кстати, что TinyXml ругается, если не совпадает кодировка с тем, что написано в начале файла. |