docx parser
Пишу docx-"парсер". С++, MS Visual Studio 2005
"парсер" должен извлекать из файла текст(структурированно - в виде дерева, где корневые элементы - названия разделов(заголовки), а листья - текст этих разделов).
стадию разархивирования - прошёл, имею список xml'ек.
теперь надо xml'ки пропарсить.
у меня практически нет опыта в парсинге в целом и мало опыта работы с xml в частности, поэтому такой вопрос:
как будет оптимальнее(с точки зрения быстродействия) парсить xml? использовать регулярки, или обрабатывать посимвольно?
или есть другие способы?
буду очень длагодарен за совет.
пс. в принципе, можете порекомендовать библиотеку для этих целей, но мне хотелось написать самому и разобраться.
msxml
Без .NET это надо долго курить спецификацию формата.
Dart Bobr, дело в том, что проект, в котором будет использоваться парсер, претендует на кроссплатформенность (win, unix), так что прямое использование .NET не допускается..
да и использование из unmanaged c++ неймспейсов .NET будет сопровождаться большими сложностями, скорее всего..
Есть еще "движки" XersesXML и OpenXML но про них знаю только о существовании, если разберешься, напиши об их применимости в данном контексте?
Цитата: JihN
Phodopus, спасибо, попробую
Dart Bobr, дело в том, что проект, в котором будет использоваться парсер, претендует на кроссплатформенность (win, unix), так что прямое использование .NET не допускается..
да и использование из unmanaged c++ неймспейсов .NET будет сопровождаться большими сложностями, скорее всего..
Dart Bobr, дело в том, что проект, в котором будет использоваться парсер, претендует на кроссплатформенность (win, unix), так что прямое использование .NET не допускается..
да и использование из unmanaged c++ неймспейсов .NET будет сопровождаться большими сложностями, скорее всего..
дотнет заявляется как кроссплатформенная вроде
Да, но насколько я слышал, порт дотнета под линукс делается энтузиастами, а не майкрософтом.
Цитата: oxotnik333
дотнет заявляется как кроссплатформенная вроде
Она кроссплатформенная в том смысле, что от аппаратной платформы не зависит. Впрочем, реализации .NET стандартизованы (кажется, даже ISO).[QUOTE=Phodopus]Ууу, если на кроссплатформенность, тогда MSXML не покатит[/QUOTE]Модель обработки xml также диктуется стандартом от товарищей w3c. Она везде одинакова! Достать парсер - не проблема: достаточно обратиться к гуголу с запросом open source xml parser (затейники формата так и cоветуют:)). Expat - один из таких парсеров.
Цитата: Dart Bobr
Да, но насколько я слышал, порт дотнета под линукс делается энтузиастами, а не майкрософтом.
а сам линукс тож энтузиастами писан :)
Цитата: oxotnik333
а сам линукс тож энтузиастами писан :)
Его уже давно пишут именно профессионалы. На устранении багов можно поднимать нехилый лавандос...
а энтузиасты могут быть и профессионалами :)
2All, спасибо за советы, пока остановился на Arabica XML Toolkit
[QUOTE=oxotnik333]а энтузиасты могут быть и профессионалами :)[/QUOTE]Профессиональные энтузиасты? :D
можно еще попробовать libxml или boost spirit