pugixml perpustakaan pemrosesan XML ringan dengan dukungan XPath
Abstrak
Pada artikel ini saya akan menjelaskan cara menggunakan pugixml
untuk memproses data XML. Dengan pustaka pemrosesan ini, Anda dapat menggunakan DOM
parser untuk membaca dan memanipulasi node dan XPATH
notasi untuk meminta node.
Cara membangun
Untuk membangun sumber, Anda harus mengunduh rilis dari https://github.com/zeux/pugixml/tags. Sekarang Anda dapat mengkompilasi silang sumber dengan PLCnext
rantai alat yang diberikan oleh Phoenix Contact
. Cuplikan kode berikut akan menampilkan cmake script
untuk melakukan kompilasi silang.
#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
Cara menggunakan
Pertama, Anda harus mengintegrasikan C++ header
dan perpustakaan di lingkungan proyek Anda. Setelah selesai, Anda dapat menggunakan pugixml
pemrosesan.
Memuat dokumen
pugi::xml_document doc;
pugi::xml_parse_result result = doc.load_file("data.xml");
...
Melintasi subnode dari node tertentu
Anda dapat melintasi melalui pohon DOM dan Anda juga dapat memanipulasi node.
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();
}
}
Menggunakan XPATH
XPath memberi Anda kebebasan untuk mengakses node dan atribut dengan sangat mudah.
//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]");
Menyimpan dokumen XML
Anda dapat menyimpan dokumen XML.
doc.save_file("new_data.xml");
Informasi Lebih Lanjut
Jika Anda tertarik untuk mendapatkan informasi lebih lanjut tentang pugixml
Anda dapat memeriksa tautan berikut:
- GitHub :https://github.com/zeux/pugixml
- Situs web:https://pugixml.org/
Lisensi
Perpustakaan diterbitkan di bawah Lisensi MIT