Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Technologie industrielle

pugixml – Analyse XML efficace avec support XPATH natif

Résumé

Cet article explique comment utiliser pugixml pour traiter des données XML. Cette bibliothèque de traitement permet d'utiliser un parseur DOM pour lire et manipuler les nœuds, et la notation XPATH pour interroger les nœuds.

Comment compiler

Pour compiler les sources, téléchargez une release depuis https://github.com/zeux/pugixml/tags. Puis cross-compilez avec la toolchain PLCnext fournie par Phoenix Contact. Le snippet ci-dessous montre le script cmake pour la cross-compilation.

# Adaptez les variables d'environnement à vos besoins
cmake \
 -G "Unix Makefiles" \
 -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

Intégrez d'abord le header C++ et la bibliothèque dans votre environnement de projet. Une fois fait, vous pouvez utiliser le traitement pugixml.

Charger un document

pugi::xml_document doc;
pugi::xml_parse_result result = doc.load_file("data.xml");
...

Parcourir les sous-nœuds depuis un nœud donné

Vous pouvez parcourir l'arbre DOM et manipuler les nœuds.

pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool");
// parcours des sous-nœuds
for (pugi::xml_node tool: tools) {
  std::cout << " " << tool.name();
  // récupération des attributs
  for (pugi::xml_attribute attr: tool.attributes()) {
    std::cout << " " << attr.name() << "=" << attr.value();
  }
}

Utiliser XPATH

XPATH permet d'accéder facilement aux nœuds et attributs.

// accès à un nœud
pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool");
pugi::xpath_node_set all_tools = doc.select_nodes("//Tool");
// accès aux attributs
auto docIdNode = doc.select_node("@ID");
auto docIdNode_One = doc.select_node("//Tool[@ID==1]");

Sauvegarder un document XML

Vous pouvez sauvegarder le document XML.

doc.save_file("new_data.xml");

Plus d'informations

Pour en savoir plus sur pugixml :

Licence

La bibliothèque est publiée sous licence MIT.

Technologie industrielle

  1. Maîtriser multiplication et division en notation scientifique
  2. Industrie 4.0 : Questions-réponses avec Verena Majuntke de Bosch.IO sur l'IoT, l'automatisation et l'usine du futur
  3. Renesas lance RX72M : MCUs avec EtherCAT intégré pour automatisation industrielle
  4. Maîtriser std::map en C++ : Guide complet avec exemples de code
  5. calloc() en C : Allocation mémoire initialisée à zéro et exemple pratique
  6. Maîtriser la fonction free() en C : Guide pratique et exemple
  7. Traitement XML en Python : Guide pour la gestion de données interopérables
  8. Maîtriser l'usinage CNC de bijouterie : guide complet
  9. Linq : puissante bibliothèque de traitement de listes pour C++ moderne