Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Велосипедище ясен пень. Я пытаюсь увидеть какое-то интересное зерно в функции SomeConversionFunction но тщетно. Деревянно как-то и велосипедно. Просто fucken stateless function. Вот Apache Digester красиво реализован мдя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 19:28 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
dj_ravenAnd here is the table, describing XML structure i have posted above: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Скорее так: ... ... {2, "name", DATATAG, FLDSTR, &name, NULL}, {2, "port", DATATAG, FLDSTR, &port, NULL}, ... ... Ведь name и port это скорее всего переменные в которые ты хочешь принять их значения. И все же еще один вопрос. Судя по приведенному примеру имеем n каких то контроллеров, которые имеют каждый несколько входов и выходов /судя по примеру нас интересует получение от них данных/. /все же твой пример аналогичен диалоговой форме. Имеется какое-то число short type; их типов. Наименование которой находится в char tag[32]; и конечно каждая из них имеет свой набор полей/ Если это не так, то приведи пожалуйста пример rsp_descr скажем у которого max значение уровня == 4. Конечно понимаю, что ты сейчас можешь скажем в node dj_ravenAnd here is the table, describing XML structure i have posted above: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Скорее так: ... ... {2, "name", DATATAG, FLDSTR, &name, NULL}, {2, "port", DATATAG, FLDSTR, &port, NULL}, ... ... Ведь name и port это скорее всего переменные в которые ты хочешь принять их значения. И все же еще один вопрос. Судя по приведенному примеру имеем n каких то контроллеров, которые имеют каждый несколько входов и выходов /судя по примеру нас интересует получение от них данных/. /все же твой пример аналогичен диалоговой форме. Имеется какое-то число short type; их типов. Наименование которой находится в char tag[32]; и конечно каждая из них имеет свой набор полей/ Если это не так, то приведи пожалуйста пример rsp_descr скажем у которого max значение уровня == 4. Конечно понимаю, что ты сейчас можешь скажем в node <name> и <port> добавить новые ветки ... Вообщем то идея понятна. Возьмем к примеру исходники редактора notepad++. Его автор сохраняет опции в одном или нескольких xml и при инициализации редактора имеем код на C++ в 4000 строк, который рутинно обрабатывает все nodes из разных xml и перекладывает их в структуры? Ты это дело хочешь решить путем имея description этих xml иметь алгоритм, который будет генерировать тот код, который будет выполнять те же действия, что и ручное кодирование /на примере notepad++/. Оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 19:42 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
MasterZivdj_ravenИ просьба, если не знаете таких библиотек, то луче ничего не пишете, а не пытайтесь меня убедить, что их не может быть в принципе :) Если я её не найду, я её просто напишу сам я уверен, что библиотека ваша была доморощенная. в то, что ты ее напишешь, я лично не верю, потому что иначе уже бы написал - там реально делать нечего. но ты похоже на делфи программировал. Написал, если бы было время. За 7 часов, в лучшем случае, в месяц много не напишешь. А мне по этому проекту есть еще чем заняться. Сам ты на делфи писал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 20:50 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
ИзопропилСтранный какой-то XML - с пробелами в именах элементов da kakaja raznica, eto primer. Модератор: транслит на форуме под запретом. ... Наезды удаляем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 20:52 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012 Ты это дело хочешь решить путем имея description этих xml иметь алгоритм, который будет генерировать тот код, который будет выполнять те же действия, что и ручное кодирование /на примере notepad++/. Оно? Хотелось бы услышать мнение об этой идее ... Правда эта идея разделяется на две ветки: 1) Генерировать C++ код на основании descriptions xml 2) Выполнять эти действия в run-time режиме Соответственно и подход к реализации library будет совершено разным. PS: Скорее всего возможна реализация и 1) и 2) подхода. Не исключаю, что желательно иметь две library ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 20:57 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012Генерировать C++ код на основании descriptions xml Речь идет не об том descriptions, который привел автор topic. PS: Если эта тема интересна, то может быть новый topic создать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 21:06 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
dj_ravenИзопропилСтранный какой-то XML - с пробелами в именах элементов da kakaja raznica, eto primer. в примере необязательно делать грубые ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 21:37 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
dj_raven, я за пять минут набросал в Visual Studio пример с использованием XmlInspector : Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. XML Код: xml 1. 2. 3. 4. 5. 6. 7. 8. Вот и нахрена тут дополнительные структуры наподобие xml_struct? А то, что описано в "таблице" rsp_descr, намного проще выразить в виде if'ов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2015, 23:03 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
dj_raven, ну что там, есть подвижки? Просто хочется разобраться, для чего же понадобился такой способ описания. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Вот я опять смотрю на это и удивляюсь. Получается, что нужно вручную указать уровень вложенности каждого узла. Зачем? А если уровней будет десяток или больше? Ведь элементарно можно ошибиться. Также нужно указывать открывающие и прочие тэги. Зачем?! Особенно закрывающие - какая обработка предполагается для них? А если тэгов тысячи - все их описывать?!! Вообще, это наводит на сильные подозрения, что это автосгенерированный код. Какая-то утилита по образцовому xml выдаёт это дело, потом по нему происходит парсинг. Гм, всё равно сложно - лишние движения. А вот указание типов узлов: FLDSHRT, FLDSTR - наводит на мысли, что таким образом производится валидация входных данных. Но опять же - зачем такой способ? Если действительно нужна валидация, то следует использовать стандартные способы: делаем XmlSchema и берём валидирующий парсер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2015, 21:50 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
petalvikПросто хочется разобраться, для чего же понадобился такой способ описания. Идея у автора правильная /на его реализацию не обращайте внимания. Более важна сама идея./ Повторю то, что ранее уже было сказано. Возьмем к примеру исходники редактора notepad++. Его автор сохраняет опции в одном или нескольких xml и при инициализации редактора имеем код на C++ в 4000 строк, который рутинно обрабатывает все nodes из разных xml и перекладывает их в структуры. Так вот автор не хочет в ручную писать эти 4000 строк, в имея некий description входящих xml и имея некую функцию, которой передается description xml принять данные из xml и разложить полученные в некоторые переменные, структуры, массивы ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 08:18 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012Так вот автор не хочет в ручную писать эти 4000 строк, в имея некий description входящих xml и имея некую функцию, которой передается description xml принять данные из xml и разложить полученные в некоторые переменные, структуры, массивы ... обычная десериализация ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 10:16 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Изопропилобычная десериализация Безусловно. Но изюминка идеи автора topic в том, что берем "чужой" xml/s/, подготавливаем description и подаем на вход некоторой функции, которая умеет принять данные и разложить в нужные места. PS: Как по мне идея неплохая и если ее воплотить в library /имеющей хорошо продуманный description .../, то можно было бы сэкономить не мало времени ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 10:46 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012 Так вот автор не хочет в ручную писать эти 4000 строк Э, не! Автор как раз вручную описывает все тысячи строк! Даже более того - он описывает каждый тэг: и открывающий, и закрывающий! С учётом уровня вложенности! Это ж опупеть можно, вручную это подсчитывать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.06.2015, 13:40 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
petalvikВладимир2012 Так вот автор не хочет в ручную писать эти 4000 строк Э, не! Автор как раз вручную описывает все тысячи строк! Даже более того - он описывает каждый тэг: и открывающий, и закрывающий! С учётом уровня вложенности! Это ж опупеть можно, вручную это подсчитывать!Задела меня эта тема, что то в ней есть. Конечно предложенный подход автора к реализации его идеи очень коряво смотрится. Но идея, то у него не плохая. Хотелось бы все же понять почему участников форума эта идея не заинтересовала? В основном все проекты которые используют xml файлы работают с ними в стиле notepad++. Сериализация/десериализация в xml классов годится для "своих" проектов, а как эффективно с наименьшей затратой времени работать с чужими xml? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 21:15 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012а как эффективно с наименьшей затратой времени работать с чужими xml? а в чём отличие от своего? если сильно непотребен - XSLT преобразование ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2015, 22:27 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012 Хотелось бы все же понять почему участников форума эта идея не заинтересовала? Потому что это бред. XML нельзя отобразить в память программы в виде массива структур. Можно в виде дерева структур, это -- DOM Владимир2012 В основном все проекты которые используют xml файлы работают с ними в стиле notepad++. Это как ? Я не понял нифига. Владимир2012 Сериализация/десериализация в xml классов годится для "своих" проектов, а как эффективно с наименьшей затратой времени работать с чужими xml? Ну, DOM, SAX. SAX нужен для большого и простого XML, DOM -- для сложного и маленького. Та "идея", что была у ТС, на самом деле легко и просто за 30 минут реализуется на любом SAX-парсере. Я лично не понимаю, ни что тут сложное, ни что тут интересное. Единственный вопрос, который мне интересен в контексте XML+C++ -- это какую библиотеку использовать для С++ для разбора XML. Библиотек много, но все разные, и не все кроссплатформные, а мне бы хотелось иметь одно решение на все случаи жизни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 08:13 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
MasterZivМожно в виде дерева структур, это -- DOM После parsing конечно имеем некое "дерево структур" - DOM, но в его в nodes данные обычно представлены в виде текста. Навряд ли это нас устроит. Поэтому мы обычно выбираем из nodes нужные нам данные и приводим их к native представлению их в программе. Т.е. перемещаем их в переменные, структуры, вектора, ... Возьмем к примеру stylers.xml /один из конфигурационных файлов notepad++/. <LexerStyles> <LexerType name="actionscript" desc="ActionScript" ext=""> <WordsStyle name="DEFAULT" styleID="11" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="FUNCTION" styleID="20" fgColor="95004A" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type2" /> <WordsStyle name="PREPROCESSOR" styleID="9" fgColor="804000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="INSTRUCTION WORD" styleID="5" fgColor="0000FF" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" keywordClass="instre1" /> <WordsStyle name="TYPE WORD" styleID="16" fgColor="8000FF" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" keywordClass="type1" /> <WordsStyle name="NUMBER" styleID="4" fgColor="FF8000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="STRING" styleID="6" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="CHARACTER" styleID="7" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="OPERATOR" styleID="10" fgColor="000080" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" /> <WordsStyle name="VERBATIM" styleID="13" fgColor="808080" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" /> <WordsStyle name="REGEX" styleID="14" fgColor="000000" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" /> <WordsStyle name="COMMENT" styleID="1" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="COMMENT LINE" styleID="2" fgColor="008000" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="COMMENT DOC" styleID="3" fgColor="008080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="COMMENT LINE DOC" styleID="15" fgColor="008080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> <WordsStyle name="COMMENT DOC KEYWORD" styleID="17" fgColor="008080" bgColor="FFFFFF" fontName="" fontStyle="1" fontSize="" /> <WordsStyle name="COMMENT DOC KEYWORD ERROR" styleID="18" fgColor="008080" bgColor="FFFFFF" fontName="" fontStyle="0" fontSize="" /> </LexerType> ... ... Как поступает автор для принятия этих данных из xml /понятно он не в "лоб" парсит его, а использует готовый парсер - SimpleXML/. Стантартно. И так наша задача принять данные из stylers.xml и представить их в native представлении программы. В notepad++ native представление данных из stylers.xml представленно в: struct StyleArray struct LexerStyler : public StyleArray struct LexerStylerArray Далее автор пишет функцию /в notepad++ это bool NppParameters::feedStylerArray(TiXmlNode *node)/, которая из DOM вытаскивает данные и помещает в один или несколько векторов. Вроде все логично, правильно и не сложно. Но такой подход принятия данных предопределяет разработку множества функций для принятия из xml логически, связанных данных. В notepad++ такой подход предопределяет написания порядка 4000 строк кода /см. Parameters.cpp и Parameters.h/, а это уже довольно трудоемко. Как же можно решить подобную задачу проще? 1-й подход - кодогенерация В программе определяем некоторые meta данные об переменных, структурах, векторах ... в которые нужно принять данные. Далее подаем на вход кодогенератору эти метаданные и он на основе этих данных выдает нам готовый C++ код, который мы просто затем copy/paste в свою программу /например в GetDataFromXML.cpp/. 2-й подход - run time принятие данных. Этот подход мне больше нравится, но его реализация будет скорее всего намного сложнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 10:38 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
MasterZivБиблиотек много, но все разные, и не все кроссплатформные, а мне бы хотелось иметь одно решение на все случаи жизни. Меня пока вполне устраивает http://sourceforge.net/projects/tinyxml/files/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 10:56 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
А не будет его, решения на все случаи жизни. Потому что разные библиотеки заточены под разные юзкейсы; что удобно использовать на одной платформе — неприемлемо на другой, где-то требуется скорость, где-то соблюдение всех стандартов, где-то трансформации, и так далее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 11:15 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Давайте я озвучу навскидку задачку. (Задаче не всеобъемлющая и не охватывает весь спектр XML анализа но ее достаточно чтобы оценить первые недостатки предлагаемой технологии (к примеру хардкод, бойлерплейт, негибкость)) Есть документ (угадайте откуда): Код: xml Необходимо 1) Сформировать plain-text вида. Код: plaintext 2) Сформировать копию исходного документа но с фильтрацией всех сообщений от зобаненных. 3) Сформировать CSV документ для импорта данных форума в другую БД. К примеру. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 12:25 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012 Как же можно решить подобную задачу проще? 1-й подход - кодогенерация В программе определяем некоторые meta данные об переменных, структурах, векторах ... в которые нужно принять данные. Далее подаем на вход кодогенератору эти метаданные и он на основе этих данных выдает нам готовый C++ код, который мы просто затем copy/paste в свою программу /например в GetDataFromXML.cpp/. Именно кодогенерация. По схеме данных (WSDL) генерируется структура на С(++) и сериализаторы и десериализаторы для них. См. например gSOAP. Владимир2012 2-й подход - run time принятие данных. Это как ? Хотя, мне лично эта тема неинтересна от слова "совсем", поэтому... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 13:11 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
Владимир2012MasterZivБиблиотек много, но все разные, и не все кроссплатформные, а мне бы хотелось иметь одно решение на все случаи жизни. Меня пока вполне устраивает http://sourceforge.net/projects/tinyxml/files/ TinyXML традиционно не поддерживал никогда namespaces, уже стал ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 13:12 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
RWolfА не будет его, решения на все случаи жизни. Потому что разные библиотеки заточены под разные юзкейсы; что удобно использовать на одной платформе — неприемлемо на другой, где-то требуется скорость, где-то соблюдение всех стандартов, где-то трансформации, и так далее. Это почему это не будет ? В Java есть такие библиотеки, универсальные, переносимые, быстрые, с какого лешего им не быть под C++ ? В BOOST много библиотек есть, почему бы туда не запихать ещё и XML ? (кстати, надо поглядеть, что там на этот счёт). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 13:14 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
mayton, Это НЕ XML! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 13:15 |
|
||
|
Xml parser библиотека для C/C++
|
|||
|---|---|---|---|
|
#18+
MasterZivTinyXML традиционно не поддерживал никогда namespaces, уже стал ? Выдержка из TinyXML-2 http://www.grinninglizard.com/tinyxml2/ "... 4. More modern C++, including a proper namespace." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2015, 13:23 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38984311&tid=2018949]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
72ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 288ms |
| total: | 472ms |

| 0 / 0 |
