pugixml une bibliothèque de traitement XML légère avec prise en charge de XPATH
Résumé
Dans cet article, je vais vous expliquer comment utiliser pugixml
pour traiter les données XML. Avec cette bibliothèque de traitement, vous pouvez utiliser un DOM
analyseur pour lire et manipuler les nœuds et le XPATH
notation pour interroger les nœuds.
Comment construire
Pour construire les sources, vous devez télécharger une version depuis https://github.com/zeux/pugixml/tags. Vous pouvez maintenant compiler la source avec le PLCnext
chaîne d'outils donnée par Phoenix Contact
. L'extrait de code suivant affichera le cmake script
pour croiser la compilation.
#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
Comment utiliser
Il faut d'abord intégrer le C++ header
et la bibliothèque dans votre environnement de projet. Lorsque vous avez terminé, vous pouvez utiliser le pugixml
traitement.
Charger un document
pugi::xml_document doc;
pugi::xml_parse_result result = doc.load_file("data.xml");
...
Parcourir les sous-nœuds à partir d'un nœud donné
Vous pouvez traverser via l'arborescence DOM et vous pouvez également manipuler les nœuds.
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();
}
}
Utiliser XPATH
XPATH vous donne la liberté d'accéder très facilement aux nœuds et aux attributs.
//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]");
Enregistrement du document XML
Vous pouvez enregistrer le document XML.
doc.save_file("new_data.xml");
Plus d'informations
Si vous souhaitez obtenir plus d'informations sur pugixml
vous pouvez consulter les liens suivants :
- GitHub :https://github.com/zeux/pugixml
- Site Web :https://pugixml.org/
Licence
La bibliothèque est publiée sous licence MIT
Technologie industrielle
- arithmétique avec notation scientifique
- Q&R avec un architecte de solution Industrie 4.0
- Renesas :MCU RX72M avec prise en charge EtherCAT pour les applications industrielles
- Carte dans la bibliothèque de modèles standard C++ (STL) avec exemple d'impression
- Fonction calloc() dans la bibliothèque C avec l'EXEMPLE de programme
- Fonction free() dans la bibliothèque C :comment l'utiliser ? Apprendre avec l'exemple
- Python - Traitement XML
- Comment usiner des bijoux avec l'usinage CNC ?
- Linq la bibliothèque de traitement de liste pour C++