что самый легкий путь состоит в том, чтобы генерировать xml в C++?

Необходимо обновить версию BIRT до 4.8. Выполните следующие шаги,

  1. Перейдите к Справка в строке меню Eclipse и выберите Установить новое программное обеспечение [114 ]
  2. Нажмите кнопку Добавить
  3. Добавить этот URL-адрес в Местоположение

    http://download.eclipse.org/birt/update- site / photon-interim /

enter image description here

  1. Наконец, обновите Eclipse с помощью [1116 ] Помощь -> Проверить наличие обновлений

15
задан eyberg 19 November 2008 в 21:42
поделиться

5 ответов

Некоторые могут объявить меня еретик XML - но один эффективный путь состоит в том, чтобы просто генерировать его с Вашими любимыми строковыми выходными инструментами (печать, потоки вывода, и т.д.) - это может перейти к буферу или файлу.

После того, как сохраненный - действительно необходимо затем проверить со схемой прежде, чем фиксировать его наша отправка его.

Для одного из наших проектов у нас есть очень простой набор шаблонов для управления, начинаются/конечными тэги, и приписывает. Они у каждого есть потоковый выходной оператор. Это делает очень легким генерировать источник XML и отладка. Это заставляет структуру кода поколения XML очень походить на сам XML.

Одно преимущество этого состоит в том, что можно генерировать большой объем XML эффективно при потоковой передаче в файл. Вы оплатите издержки проверки позже (по-видимому, в лучшее время для дорогой операции).

Оборотная сторона этой техники - то, что она по существу производится только. Это не подходит для создания затем использующий XML динамично.

13
ответ дан 30 November 2019 в 23:54
поделиться

Какая платформа? MSXML является опцией в Windows. CMarkup является другим хорошим выбором. Если.NET является опцией, она имеет превосходную поддержку XML.

0
ответ дан 30 November 2019 в 23:54
поделиться

Я недавно рассмотрел набор библиотек XML специально для генерации кода XML.

Резюме: Я принял решение пойти с TinyXML ++.

TinyXML ++ имеет достойный синтаксис C++, основан на сформировавшихся библиотеках TinyXML C, свободный и с открытым исходным кодом (лицензия MIT) и небольшим. Короче говоря, это помогает сделать задание быстро. Вот быстрый отрывок:

Document doc;
Node* root(doc.InsertEndChild(Element("RootNode")));
Element measurements("measurements");
Element tbr("TotalBytesReceived",  12);
measurements.InsertEndChild(tbr);
root->InsertEndChild(measurements);

Который производит:

<RootNode>
    <measurements>
        <TotalBytesReceived>12</TotalBytesReceived>
    </measurements>
</RootNode>

Я был довольно доволен им.

Я рассмотрел многих других; вот некоторые лучшие соперники:

Xerces: король-папа. Делает все (особенно в сочетании с Xalan), но тяжеловес и вызывает управление памятью на пользователя.

RapidXML: Большой для парсинга (это - синтаксический анализатор на месте и быстро), но не хорошо для поколения, так как добавляющие узлы к DOM требуют управления памятью.

Boost.XML (предложение): большие Взгляды - мощный, превосходный синтаксис C++. Однако это еще не прошло процесс рассмотрения, не поддерживается, и интерфейс может измениться. Почти используемый это так или иначе. Нетерпеливое ожидание это - принятие в Повышение.

Libxml (++):Очень хорошо; мощный, достойный синтаксис. Но это - большой выход, если все, что Вы делаете, генерирует XML и связывается с glibmm библиотекой (для ustring). Если мы были только на Linux (как себя?) Я серьезно рассмотрел бы.

XiMOL: Уникальная библиотека на основе потоков. Это было немного слишком упрощенно для наших потребностей, но для основного поколения XML можно найти это довольно полезным. Потоковый синтаксис довольно аккуратен.

Надо надеяться, существует что-то там несколько полезное!

48
ответ дан 30 November 2019 в 23:54
поделиться

Я на самом деле не попробовал сериализацию повышения, чтобы сделать это, но насколько я понимаю, если Вы очень тщательно выбираете свои опции, можно установить много различных вариантов в схеме (таких как предотвращение указателя flyweighting и установка имен элементов для определенных типов)

0
ответ дан 30 November 2019 в 23:54
поделиться

я использую tinyXml ++, и он делает очень легким создать xml, как отправлено выше. Это также сохранит его в файл в одной команде, но я не могу узнать, как сохранить его к буферу.

0
ответ дан 30 November 2019 в 23:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: