pugixml — облегченная библиотека обработки XML с поддержкой XPATH.
Аннотация
В этой статье я объясню, как использовать pugixml
для обработки XML-данных. С этой библиотекой обработки вы можете использовать DOM
синтаксический анализатор для чтения и управления узлами и XPATH
нотация для запроса узлов.
Как построить
Чтобы собрать исходники, вам нужно скачать релиз с https://github.com/zeux/pugixml/tags. Теперь вы можете кросскомпилировать исходный код с помощью PLCnext
. набор инструментов, заданный Phoenix Contact
. Следующий фрагмент кода покажет cmake script
для кросскомпиляции.
#Please set the environment variables to your needs
cmake \
-G "Unix Malkefiles" \
-D CMAKE_BUILD_TYPE=Release \
-D BUILD_TESTING=OFF \
-D BUILD_SHARED_LIBS=ON \
-D "CMAKE_STAGING_PREFIX=${CMAKE_STAGING_PREFIX}" \
-D "CMAKE_INSTALL_PREFIX=${CMAKE_STAGING_PREFIX}" \
-D "CMAKE_TOOLCHAIN_FILE=${ARP_TOOLCHAIN_FILE}" \
-D "ARP_TOOLCHAIN_ROOT= ${ARP_TOOLCHAIN_ROOT}" \
-D BUILD_TESTS=OFF \
-S "${SOURCE_DIRECTORY}" \
-B "${BUILD_DIRECTORY}"
cmake --build "${BUILD_DIRECTORY}" --target install
Как использовать
Сначала вам нужно интегрировать C++ header
и библиотека в среде вашего проекта. Когда вы закончите, вы можете использовать pugixml
обработка.
Загрузка документа
pugi::xml_document doc;
pugi::xml_parse_result result = doc.load_file("data.xml");
...
Обход подузлов от заданного узла
Вы можете перемещаться по дереву DOM, а также манипулировать узлами.
pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool");
//traversing subnodes
for (pugi::xml_node tool: tools)
{
std::cout << " " << tool.name();
//getting attributes
for (pugi::xml_attribute attr: tool.attributes())
{
std::cout << " " << attr.name() << "=" << attr.value();
}
}
Использование XPATH
XPATH дает вам очень простой доступ к узлам и атрибутам.
//accessing node
pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool");
pugi::xpath_node_set all_tools = doc.select_nodes("//Tool");
//accessing attibutes
auto docIdNode = doc.select_node("@ID");
auto docIdNode_One = doc.select_node("//Tool[@ID==1]");
Сохранение XML-документа
Вы можете сохранить XML-документ.
doc.save_file("new_data.xml");
Дополнительная информация
Если вы хотите получить дополнительную информацию о pugixml
вы можете проверить следующие ссылки:
- GitHub:https://github.com/zeux/pugixml
- Веб-сайт:https://pugixml.org/
Лицензия
Библиотека опубликована под лицензией MIT
Промышленные технологии
- Схема с переключателем
- Арифметика с научной записью
- Вопросы и ответы с архитектором решений Индустрии 4.0
- Renesas:микроконтроллеры RX72M с поддержкой EtherCAT для промышленных приложений
- Карта в стандартной библиотеке шаблонов C++ (STL) с примером печати
- Функция calloc() в библиотеке C с программой ПРИМЕР
- Функция free() в библиотеке C:как использовать? Учитесь на примере
- Python — обработка XML
- Как обрабатывать ювелирные изделия с помощью станков с ЧПУ?
- Linq библиотека обработки списков для C++