Cara Bekerja dengan Pemrosesan XML dalam C++

Cara Bekerja dengan Pemrosesan XML dalam C++

Aspose.Cells FOSS for C++ includes a lightweight XML processing layer used internally for reading and writing Open XML parts. The XmlDocument, XmlElement, dan XmlAttribute kelas menyediakan akses programatis ke data XML. Panduan ini mencakup loading XML, traversing elemen, dan serialisasi dokumen.

Panduan Langkah-Langkah

Langkah 1: Siapkan Bangunan

cmake_minimum_required(VERSION 3.15)
project(XmlProcessing CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(XmlProcessing main.cpp)
target_link_libraries(XmlProcessing PRIVATE Aspose.Cells.Foss.Cpp)

Langkah 2: Masukkan Judul

#include "aspose/cells_foss/XmlDocument.h"
#include "aspose/cells_foss/XmlElement.h"
#include "aspose/cells_foss/XmlAttribute.h"

using namespace Aspose::Cells_FOSS;

Langkah 3: Mengunggah Dokumen XML

Penggunaan XmlDocument::Load untuk menganalisis string XML ke dalam pohon dokumen in-memory:

int main() {
    XmlDocument doc;
    doc.Load("<root><item key=\"a\">Hello</item><item key=\"b\">World</item></root>");
    return 0;
}

Langkah 4: Periksa Elemen Null

XmlElement menggunakan model berbasis pegangan elemen yang dikembalikan dari jalur yang hilang adalah null. Selalu periksa IsNull() sebelum mengakses data:

XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
    std::string val = root.GetValue();
}

Langkah 5: Atribut Transversal

Penggunaan XmlElement::GetAttributes() untuk mengambil koleksi atribut. Setiap pengendali atribus mengungkapkan nama dan nilainya:

auto attrs = root.GetAttributes();
for (auto& attr : attrs) {
    bool isNull = attr.IsNull();
}

Langkah 6: Serial ke UTF-8 String

Penggunaan XmlDocument::SaveToUtf8() untuk mendapatkan XML yang diserialisasi:

std::string xml = doc.SaveToUtf8();

Langkah 7: Mengatasi Kesalahan Parse

Wrap XmlDocument::Load dalam blok try/catch saat memproses XML yang tidak dapat dipercaya:

try {
    doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
    // Handle malformed XML
}

Masalah dan Fixes Umum

IsNull() kembali benar secara tak terduga Jalur elemen tidak ada dalam dokumen. Verifikasi struktur XML sesuai dengan skema yang Anda harapkan sebelum menyeberang.

XmlParsingException pada beban Input tidak diformulasikan dengan baik atau berisi entitas yang tidak didukung. Validasi XML dengan alat eksternal sebelum mengedarkannya ke Load.

SaveToUtf8() mengembalikan output yang tidak terduga Struktur dokumen dimodifikasi setelah Load. Memeriksa semua intermediate Build operasi yang dilakukan dengan benar.

Atribut tidak ditemukan Pencarian atribut sensitif terhadap huruf besar. Periksa nama atributu sesuai dengan apa yang muncul di sumber XML.

Hasil kosong dari GetValue() Node teks yang hanya berisi ruang putih mungkin mengembalikan string kosong. Periksa XML mentah untuk mengkonfirmasi elemen memiliki konten non-ruang putih.

Pertanyaan yang sering ditanya

Apakah lapisan XML dimaksudkan untuk penggunaan aplikasi atau hanya digunakan secara internal?

Pengelolaan XmlDocument, XmlElement, dan XmlAttribute kelas adalah bagian dari API publik dan dapat digunakan secara langsung. Kelas mapper (WorkbookXmlMapper, WorksheetXmlMapper, dll) adalah pembantu internal yang dipanggil oleh XlsxWorkbookSerializer dan tidak dimaksudkan untuk penggunaan langsung.

Bisakah saya membuat dokumen XML baru dari awal?

Ya, gunakan. XmlDocument::Build untuk membangun dokumen secara programatis, kemudian menggunakan XmlElement dan (b) XmlAttribute::MakeAttribute untuk menambahkan node.

Does XmlDocument mendukung pertanyaan XPath?

Tidak. Implementasi saat ini hanya menyediakan penjelajahan elemen; XPath tidak didukung.

Apa yang dilakukan pengkodean SaveToUtf8() menghasilkan?

Output selalu UTF-8 dikodekan XML. Deklarasi XML (<?xml version="1.0" encoding="UTF-8"?>) termasuk dalam output.

Bolehkah aku menggunakan … XmlDocument untuk membaca bagian arsip XLSX?

Bagian arsip XLSX dikelola secara internal oleh XlsxWorkbookSerializer. Tidak ada API publik untuk mengekstrak bagian arsip mentah. Gunakan Workbook untuk semua operasi XLSX loading/save.

See Also

 Bahasa Indonesia