LINUX.ORG.RU

pugixml 1.16

 , , , ,


0

3

16 июня, после почти полутора лет разработки, состоялся выпуск 1.16 pugixml — быстрой кроссплатформенной библиотеки для парсинга и обработки XML (лицензия MIT).

Библиотека предоставляет DOM-подобный интерфейс с возможностями обхода узлов документа и их изменения. Также поддерживается XPath 1.0 и полная поддержка Юникода (UTF-8, UTF-16 (BE/LE), UTF-32 (BE/LE) и UCS-2), с автоматическим преобразованием кодировок.

Поддерживается использование без стандартной библиотеки и исключений C++, и режим «только заголовочные файлы».

Это юбилейный выпуск — в этом году проекту исполнится 20 лет! Подробнее об истории создания и развития библиотеки можно прочитать на pugixml.org, GitHub или в первой редакции новости.

  • Изменения поведения
    • элементы c одним пустым дочерним элементом PCDATA теперь выводятся с пустыми тегами (если не используется параметр format_no_empty_element_tags).
  • Улучшения
    • добавлена опция PUGIXML_CHARCONV_FLOAT для преобразования чисел с плавающей запятой, используя <charconv>; для этого требуется C++17, что делает преобразования независимыми от локали и может повысить производительность;
    • добавлены функции xml_node::ensure_child и xml_node::ensure_attribute, возвращающие дочерний элемент или атрибут с указанным именем, добавляя его, если он отсутсвовал;
    • улучшена производительность поиска узлов и атрибутов по имени;
    • загрузка документа из пустого буфера больше не приводит к выделению памяти.
  • Улучшения XPath
    • улучшена производительность запросов, в которых выполняется вычисление или сравнение значений атрибутов, например @attr > 5;
    • улучшена производительность запросов, выбирающих узлы и атрибуты по имени.
  • Исправления ошибок
    • исправлено переполнение стека при удалении поддеревьев с очень глубоким уровнем вложения;
    • исправлены целочисленные переполнения, которые могли приводить к сбоям при загрузке очень больших (> 1ГБ) документов на 32-разрядных платформах в режиме PUGIXML_WCHAR_MODE;
    • исправлена ошибка разыменования нулевого указателя при копировании объектов xpath_variable_set со строковыми переменными с неприсвоенными значениями.
  • Улучшения поддержки CMake
    • улучшена поддержка опции PUGIXML_BUILD_APPLE_FRAMEWORK;
    • добавлена опция CMake PUGIXML_INSTALL_SOURCE для инсталляции pugixml.cpp (полезно при работе в режиме «только заголовки»).
  • Улучшения совместимости
    • добавлены файлы проекта и пакеты NuGet для Visual Studio 2026;
    • исправлена проблема совместимости с модулями C++20 при включении файла pugixml.hpp во фрагмент глобального модуля;
    • исправлены предупреждения Clang и GCC -Wextra-semi-stmt, -Wsign-conversion и -Wuninitialized (GCC 16);
    • исправлена ошибка компиляции с Embarcadero C++ XE5;
    • устранены несколько ложных срабатываний статического анализа.

>>> Репозиторий на GitHub

>>> Подробности на pugixml.org

★★★★★

Проверено: CrX ()
Последнее исправление: CrX (всего исправлений: 2)

Это что, шутка такая? судя по https://github.com/zeux/pugixml/tree/master/tests/data:

  1. неймспейсов нет вообще. Не показана обработка, не показана логика разыменовывания префиксов
  2. в примерах xpath неймспейсов нет в принципе
  3. xml 1.1 с его 0x01-0x19 не показан как обрабатывается а это вполне реальные
  4. XInclude изобретён в 2003г, здесь похоже на него положили (впрочем это архитектурное решение, ну ок)
  5. про DTD ни слова, ни встроенный ни по ссылке

Достаточно Saxon посмотреть что-ли, ну ё маё.

Похоже только самые детские XML обрабатываются.

chumpa
()
Ответ на: комментарий от chumpa

Ага, поэтому корпораты придумали SOAP / WSDL / UDDI / WS-Addressing / WS-Security / WS-Policy / WS-ReliableMessaging / WS-AtomicTransaction / WS-Coordination / WS-Trust / WS-Federation / WS-SecureConversation / WS-Eventing / WS-Notification / WS-ResourceFramework / XML Signature / XML Encryption / SAML / XACML / ebXML / MTOM / XOP / BPEL.

Потому что xml «недостаточно хорош»

PPP328 ★★★★★
()
Ответ на: комментарий от PPP328

вы тупите? SOAP не имеет прямого непосредственного отношения к XML XML не имеет прямого непосредственного отношения к SOAP

Если бы по SOAP обменивались только DBF, тут и фокспро был недостаточно хорош?

По SOAP обменивают биты. Значит все биты фтопку.

chumpa
()
Ответ на: комментарий от PPP328

вы путаете вариации с прикладным.
xml сам по себе абстрактен, а вот всё остальное к прикладному уровню.

etwrq ★★★★★
()

и зачем в struct писать функционирующий код? тогда уж пишите класс, ибо структуры только для данных.

etwrq ★★★★★
()
Ответ на: комментарий от firkax

предполагаю, libxml2 вполне нормальная библиотека, написана условно в 2003 и умеет всё что было тогда в W3C изобретено по XML. Гному-то я верю в плане XML.

chumpa
()
Ответ на: комментарий от chumpa

Что там было в 2003 - история, я про текущее положение дел, рядом с гномом сейчас никто себя уважающий хостить свои проекты не будет.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)
Ответ на: комментарий от firkax

Ув.firkax, а что есть кроме каментов супротив гномовской кодобазы? по мне хоть гном, хоть KDE, хоть QT++, а и тем более Microsoft – нормально софт делается, не без косяков. Для живых разработчиков пишется пока что. ИИшница ещё не всё подмяла.

Я готов хостить с гномом. Себя уважаю. Вопросы?

chumpa
()

Не верю в части «быстрой». На дворе 2026 год, и если парсинг XML вдруг где-то оказался узким горлышком, то надо просто дать задание нейронке rewrite it in zig.

sarumeister
()
Ответ на: комментарий от fat-II

кто сказал, кто сказал - struct || class - чуете, в чём разница? если struct-ом можно описать class, то зачем вообще class? как раз придумано чтобы разделять субъекты и объекты.

etwrq ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.