pugixml – Effizientes XML-Parsing mit nativer XPATH-Unterstützung
Zusammenfassung
In diesem Artikel erkläre ich, wie man pugixml zur Verarbeitung von XML-Daten verwendet. Mit dieser Verarbeitungsbibliothek können Sie einen DOM-Parser zum Lesen und Manipulieren von Knoten und die XPATH-Notation zum Abfragen von Knoten verwenden.
Wie man baut
Um die Quellen zu bauen, müssen Sie ein Release von https://github.com/zeux/pugixml/tags herunterladen. Nun können Sie den Quellcode mit dem PLCnext-Toolchain, bereitgestellt von Phoenix Contact, cross-kompilieren. Der folgende Code-Snippet zeigt das cmake script für das Cross-Compiling.
# Bitte Umgebungsvariablen nach Bedarf setzen
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
Wie man verwendet
Zuerst müssen Sie den C++-header und die Bibliothek in Ihre Projektumgebung integrieren. Wenn Sie fertig sind, können Sie die pugixml-Verarbeitung nutzen.
Dokument laden
pugi::xml_document doc;
pugi::xml_parse_result result = doc.load_file("data.xml");
...
Unterknoten von einem gegebenen Knoten durchlaufen
Sie können über den DOM-Baum traversieren und die Knoten auch manipulieren.
pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool");
// Unterknoten durchlaufen
for (pugi::xml_node tool: tools) {
std::cout << " " << tool.name();
// Attribute abrufen
for (pugi::xml_attribute attr: tool.attributes()) {
std::cout << " " << attr.name() << "=" << attr.value();
}
}
XPATH verwenden
XPATH gibt Ihnen die Freiheit, sehr einfach auf Knoten und Attribute zuzugreifen.
// Knoten zugreifen
pugi::xpath_node_set tools = doc.select_nodes("/Profile/Tools/Tool");
pugi::xpath_node_set all_tools = doc.select_nodes("//Tool");
// Attribute zugreifen
auto docIdNode = doc.select_node("@ID");
auto docIdNode_One = doc.select_node("//Tool[@ID==1]");
XML-Dokument speichern
Sie können das XML-Dokument speichern.
doc.save_file("new_data.xml");
Weitere Informationen
Wenn Sie an weiteren Informationen zu pugixml interessiert sind, können Sie folgende Links prüfen:
- GitHub: https://github.com/zeux/pugixml
- Website: https://pugixml.org/
Lizenz
Die Bibliothek wird unter der MIT-Lizenz veröffentlicht.
Industrietechnik
- Schaltung mit Schalter: Praktischer Leitfaden zu grundlegenden elektrischen Schaltungen
- Multiplikation und Division mit wissenschaftlicher Notation meistern
- Industrie 4.0 Insights: Q&A mit Verena Majuntke von Bosch.IO zu IoT, Automatisierung und der Fabrik der Zukunft
- Renesas bringt RX72M MCUs mit integriertem EtherCAT für Industrial Automation
- std::map in C++ meistern: Umfassender Guide mit Code‑Beispielen
- calloc() in C: Null-initialisierte Speicherallokation mit praktischem Beispiel
- C's free() Funktion meistern: Praktischer Leitfaden & Beispiel
- Python XML-Verarbeitung: Leitfaden für interoperable Datenverwaltung
- CNC-Schmuckbearbeitung meistern: Ein kompletter Leitfaden
- Linq: Leistungsstarke Listenverarbeitungsbibliothek für modernes C++