| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > XML сервер |
| Автор: qpharm 25.1.2008, 11:20 |
| Требуется, что С++ программа генерировала HTML (XML) файлы, чтобы ее вывод можно было просматривать любым браузером (html - сервер). С помощью каких инструментов (библиотек) можно это сделать проще? |
| Автор: Fazil6 25.1.2008, 11:45 | ||
ну формировать оформление тегами вполне просто можно формировать стандартными средствами. Всякими библиотеками есть необходимость пользоваться при чтении таких конструкций, а записать проблем особых нет.
|
| Автор: Lazin 25.1.2008, 11:47 |
| то-есть это CGI? tinyxml - имхо самый простой вариант... а вообще любая библиотека позволяющая работать с DOM |
| Автор: Любитель 26.1.2008, 11:59 |
Странное понятие... Может речь про реализацию HTTP-сервера? |
| Автор: jonie 26.1.2008, 18:10 | ||
если просто выводить то достаточно SAX парсеров, а то и просто вывода без всяких наворотов... надо точнее ставить задачи |
| Автор: chipset 26.1.2008, 22:17 |
| АФАИР, ТиниХМЛ плохо поддерживает ДОМ и запись вообше. Просто записать ХМЛ СТЛом гораздо проше велосипедом. |
| Автор: Ulysses4j 26.1.2008, 23:18 |
| В промышленных масштабах дле генерации любой разметки используются http://en.wikipedia.org/wiki/Template_engine_(web) (Velocity, FreeMarker, JSP, Smarty), но для С++ таковых я не знаю (и это, очевидно, потому что редко С++ применяется для решения таких задач в промышленных масштабах); однако, это не значит, что их нет вообще — гугл в помощь. Руками проще — это да, особенно, если нужен только HTML (XHTML). Хорошая библиотека для работы с XML, как говорят, Apache Xerces. |
| Автор: archimed7592 27.1.2008, 00:30 |
| Fazil6, ты имел дело и с Xerces и c libxml2? Передо мной сейчас дилема, что выбрать - если не сложно, можно в двух словах плюсы/минусы обоих? |
| Автор: qpharm 29.1.2008, 12:06 | ||
Полезный ответ. Большое спасибо. |
| Автор: Fazil6 29.1.2008, 12:30 | ||
точно не помню рассматривал ли я Xerces, но тему пробивал и варианты были. Я рассматривал несколько библиотек и какие именно точно не помню кроме микрософтовской, но выбрал libxml2 потому как мне она показалась наиболее простой и понятной в использовании имея все необходимые возможности, кросплатформенность и к тому же о ней хорошие отзывы. Правда когда передо мной вопрос стоял я не сильно шибко в самом XML разбирался и может быть я не совсем объективно оценивал, но ни разу не пожалел, что с ней связался. Хорошая дока, с примерами, сайт толковый - короче у меня никаких претензий. Сама либа на С. Добавлено через 3 минуты и 44 секунды из минусов могу предложить тока то, что оно работает исключительно с UTF-8 и как правило перед передачей парсеру и после получения от него нужно перекодировать, если скажем работаем с СР1251, но есть iconv и для меня лично это особым неудобством не является |
| Автор: archimed7592 29.1.2008, 13:07 | ||
Да, да... Уже успел столкнуться с этим, правда, сквозь PHP/DOM... Не очень приятная особенность на самом деле... |
| Автор: Ulysses4j 29.1.2008, 13:59 |
НУ, сегодня любая приличная C/C++-библиотека хорошо переносима на уровне исходников (надо только уметь собирать ее из этих исходников под разные платформы ;)) В отличие от Xerces, которая С++: классы и виртуальные функции — все радости жизни. По поводу кодировок. Ограничения libxml проистекают из того, что распарсенные данные, в какой бы кодировке они ни были представлены изначально, кодируются во внутреннем предаставлении в UTF-8. Причины этого решения http://xmlsoft.org/encoding.html на оф. сайте и мягко говоря не кажутся внятными, лично у меня такое ощущение, что товарищи решили облегчить себе жизнь при реализации библиотеки. Насколько я знаю, с Xerces ничего подобного нет. Хотя я предпочитаю использовать в xml UTF-8 =) но не всегда же приходится парсить свои документы... |
| Автор: Любитель 29.1.2008, 14:59 |
В ксерцез нуль-строки в утф-16 (XMLCh*). Для парсера и райтера можно, конечо, задать энкодинг (для парсера обычно он берётся с документа). Всё-таки я бы предпочёл ОО-дизайн xerces. Да и поддержка последних спецификаций. Доки не идеальны, но есть неплохие экзамплы. Добавлено через 29 секунд ЗЫ С libxml толком не работал - только смотрел. Не пошло... |
| Автор: archimed7592 29.1.2008, 15:04 |
| Xerces дружит с ICU? |
| Автор: Любитель 29.1.2008, 15:21 |
| А кака "дружба" тебе нужна? Чего-т я не понял |
| Автор: archimed7592 30.1.2008, 15:08 |
А я пока сам не знаю Сейчас меня вполне устраивает дружба QDomXxx и QString, но слишком уж ограниченный DOM у Qt'шников. Хотя... смотрел 4.4-tp1 - там вроде как появился XPath и прочие вкусности, но, это надо проверить более детально. |
| Автор: Любитель 30.1.2008, 15:40 | ||
Да 4.4 в плане XML очень радует
XercesC выдаёт/получает строки как утф-16 (в C-style), без вариантов. Есть всякие XMLString::transcode + куча функций обработки (статик-методы класса XMLString). Кстати, XMLString - достаточно странная вещь. Класс, с онли статик-мемебрами (почему не неймспейс?) для обработки XMLCh*. Вот так. QString ведь тоже внутренне на утф16 основан - я не понял, чем это плохо? |
| Автор: archimed7592 30.1.2008, 16:53 | ||
UTF-16 - это хорошо Минусы UTF-8 я совсем недавно уже упоминал... самый главный: необходимость делать лишние действия, а если забудешь их сделать можно нарваться на весьма пренеприятные последствия. Да и зачем их делать, когда можно не делать Минус UTF-32 - часто неоправданный перерасход памяти. |
| Автор: jonie 30.1.2008, 17:58 |
| UTF16 и UCS-2 разные вещи |
| Автор: archimed7592 30.1.2008, 18:01 |
Кто-то где-то утверждал обратное? 0_о |