Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

docx parser

32K
26 августа 2008 года
JihN
13 / / 11.05.2008
Добрый день.
Пишу docx-"парсер". С++, MS Visual Studio 2005
"парсер" должен извлекать из файла текст(структурированно - в виде дерева, где корневые элементы - названия разделов(заголовки), а листья - текст этих разделов).
стадию разархивирования - прошёл, имею список xml'ек.
теперь надо xml'ки пропарсить.
у меня практически нет опыта в парсинге в целом и мало опыта работы с xml в частности, поэтому такой вопрос:
как будет оптимальнее(с точки зрения быстродействия) парсить xml? использовать регулярки, или обрабатывать посимвольно?
или есть другие способы?
буду очень длагодарен за совет.

пс. в принципе, можете порекомендовать библиотеку для этих целей, но мне хотелось написать самому и разобраться.
14
26 августа 2008 года
Phodopus
3.3K / / 19.06.2008
msxml
255
26 августа 2008 года
Dart Bobr
1.4K / / 09.04.2004
В .NET есть свои средства для работы с офисом. На С# или VB это делается довольно просто. На С++ могут возникнуть сложности. В любом случае копать лучше в сторону неймспейса Microsoft.Office
Без .NET это надо долго курить спецификацию формата.
32K
26 августа 2008 года
JihN
13 / / 11.05.2008
Phodopus, спасибо, попробую
Dart Bobr, дело в том, что проект, в котором будет использоваться парсер, претендует на кроссплатформенность (win, unix), так что прямое использование .NET не допускается..
да и использование из unmanaged c++ неймспейсов .NET будет сопровождаться большими сложностями, скорее всего..
14
26 августа 2008 года
Phodopus
3.3K / / 19.06.2008
Ууу, если на кроссплатформенность, тогда MSXML не покатит :)
Есть еще "движки" XersesXML и OpenXML но про них знаю только о существовании, если разберешься, напиши об их применимости в данном контексте?
11
26 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: JihN
Phodopus, спасибо, попробую
Dart Bobr, дело в том, что проект, в котором будет использоваться парсер, претендует на кроссплатформенность (win, unix), так что прямое использование .NET не допускается..
да и использование из unmanaged c++ неймспейсов .NET будет сопровождаться большими сложностями, скорее всего..


дотнет заявляется как кроссплатформенная вроде

255
26 августа 2008 года
Dart Bobr
1.4K / / 09.04.2004
Да, но насколько я слышал, порт дотнета под линукс делается энтузиастами, а не майкрософтом.
341
27 августа 2008 года
Der Meister
874 / / 21.12.2007
Цитата: oxotnik333
дотнет заявляется как кроссплатформенная вроде


Она кроссплатформенная в том смысле, что от аппаратной платформы не зависит. Впрочем, реализации .NET стандартизованы (кажется, даже ISO).[QUOTE=Phodopus]Ууу, если на кроссплатформенность, тогда MSXML не покатит[/QUOTE]Модель обработки xml также диктуется стандартом от товарищей w3c. Она везде одинакова! Достать парсер - не проблема: достаточно обратиться к гуголу с запросом open source xml parser (затейники формата так и cоветуют:)). Expat - один из таких парсеров.

11
27 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
Цитата: Dart Bobr
Да, но насколько я слышал, порт дотнета под линукс делается энтузиастами, а не майкрософтом.


а сам линукс тож энтузиастами писан :)

341
27 августа 2008 года
Der Meister
874 / / 21.12.2007
Цитата: oxotnik333
а сам линукс тож энтузиастами писан :)


Его уже давно пишут именно профессионалы. На устранении багов можно поднимать нехилый лавандос...

11
27 августа 2008 года
oxotnik333
2.9K / / 03.08.2007
а энтузиасты могут быть и профессионалами :)
32K
27 августа 2008 года
JihN
13 / / 11.05.2008
oxotnik333 любой энтузиаст после нескольких лет работы над проектом исключительно на энтузиазме, в итоге станет профессионалом =)

2All, спасибо за советы, пока остановился на Arabica XML Toolkit
341
27 августа 2008 года
Der Meister
874 / / 21.12.2007
[QUOTE=oxotnik333]а энтузиасты могут быть и профессионалами :)[/QUOTE]Профессиональные энтузиасты? :D
15K
30 августа 2008 года
like-nix
46 / / 27.06.2007
можно еще попробовать libxml или boost spirit
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог