Làm thế nào để làm việc với XML xử lý trong C++

Làm thế nào để làm việc với XML xử lý trong C++

Aspose.Cells FOSS for C++ includes a lightweight XML processing layer used internally for reading and writing Open XML parts. The XmlDocument, XmlElement, và XmlAttribute Các lớp học cung cấp truy cập lập trình vào dữ liệu XML. hướng dẫn này bao gồm tải về XML, thông qua các yếu tố và phân phối tài liệu.

Hướng dẫn từng bước

Bước 1: Tạo dựng xây dựng

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)

Bước 2: Nhập đầu

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

using namespace Aspose::Cells_FOSS;

Bước 3: Tải tài liệu XML

Sử dụng XmlDocument::Load để phân đoạn một string XML vào cây tài liệu trong bộ nhớ:

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

Bước 4: Kiểm tra các yếu tố số 0

XmlElement sử dụng một mô hình dựa trên tay cầm - một yếu tố trở lại từ con đường mất tích là không. IsNull() Trước khi truy cập dữ liệu:

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

Bước 5: Đi qua các tính năng

Sử dụng XmlElement::GetAttributes() để lấy lại bộ sưu tập thuộc tính. mỗi thuộc về xử lý tiết lộ tên và giá trị của nó:

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

Bước 6: Xác định dòng UTF-8

Sử dụng XmlDocument::SaveToUtf8() Để có được XML serialized:

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

Bước 7: Xử lý lỗi Parse

Wrap XmlDocument::Load trong một block try/catch khi xử lý XML không tin tưởng:

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

Các vấn đề chung và Fixes

IsNull() Trở lại thật bất ngờ Kiểm tra cấu trúc XML phù hợp với lịch trình mong đợi của bạn trước khi đi qua.

XmlParsingException trên tải Nhập được biến dạng hoặc chứa các entities không hỗ trợ. Xác định XML với một công cụ bên ngoài trước khi chuyển nó sang Load.

SaveToUtf8() Lợi nhuận không mong đợi trở lại cấu trúc tài liệu đã được sửa đổi sau khi Load.Kiểm tra tất cả các phương tiện Build Các hoạt động được hoàn thành đúng cách.

Chứng nhận chưa tìm thấy Attribute lookup là trường hợp nhạy cảm. kiểm tra tên attribut tương ứng chính xác như nó xuất hiện trong nguồn XML.

Kết quả trống từ GetValue() Các nút văn bản chỉ chứa không gian trắng có thể trả về một dòng trống. kiểm tra XML nguyên để xác nhận mục không có nội dung không không phải là không khí.

Thường xuyên hỏi câu hỏi

XML có chỉ được sử dụng cho ứng dụng hay sử dùng nội bộ?

Các XmlDocument, XmlElement, và XmlAttribute Các lớp học là một phần của API công cộng và có thể được sử dụng trực tiếp. các lớp bản đồ (WorkbookXmlMapper, WorksheetXmlMapper,(c) Các trợ lý nội bộ được gọi là XlsxWorkbookSerializer Không được sử dụng trực tiếp.

Tôi có thể xây dựng một tài liệu XML mới từ scratch không?

Có. sử dụng XmlDocument::Build để xây dựng một tài liệu lập trình, sau đó sử dụng XmlElementXmlAttribute::MakeAttribute Thêm các nút.

Does XmlDocument Hỗ trợ XPath queries?

Không. Việc thực hiện hiện tại chỉ cung cấp các mục xử lý qua đường; XPath không được hỗ trợ.

Cấu hình nào làm SaveToUtf8() sản xuất ?

Tính năng của nó là xmxc (tạm dịch: xml) và xxx (<?xml version="1.0" encoding="UTF-8"?>(c) được bao gồm trong sản xuất.

Tôi có thể sử dụng XmlDocument Đọc các bộ phận lưu trữ XLSX?

Các bộ phận lưu trữ XLSX được quản lý nội bộ bởi XlsxWorkbookSerializer.Không có API công cộng để lấy ra các bộ phận lưu trữ nguyên. sử dụng Workbook Đối với tất cả các hoạt động tải/save XLSX.

See Also

 Tiếng Việt