Kako raditi s XML obradom u C++?

Aspose.Cells FOSS for C++ includes a lightweight XML processing layer used internally for reading and writing Open XML parts. The XmlDocument, XmlElement, i XmlAttribute Ova uputstvo obuhvaća učitavanje XML-a, prelazak elemenata i serijalizaciju dokumenata.

Korak po korak vodič

Korak 1: Pripremite se za izgradnju

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)

Korak 2: Uključite naslovnice

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

using namespace Aspose::Cells_FOSS;

Korak 3: Uplatiti XML dokument

Upotreba: XmlDocument::Load za analizu XML nizka u drvo dokumenta iz memorije:

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

Korak 4: Provjerite jesu li u pitanju Null elementi

XmlElement koristi model zasnovan na ručnici element koji se vraća iz nedostajuće staze je nul. Uvijek provjerite IsNull() prije pristupa podacima:

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

Korak 5: Prekozne atribute

Upotreba: XmlElement::GetAttributes() Svaki rukovodioci atributa prikazuju svoje ime i vrijednost:

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

Korak 6: Serijaliziranje u UTF-8 niz

Upotreba: XmlDocument::SaveToUtf8() da bi dobili serijski XML:

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

Korak 7: Rješavanje grešaka u analizi

Svrha za pakiranje XmlDocument::Load U blokovima za pokušaj/uzimanje pri obradi XML-a koji nije pouzdan:

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

Česta pitanja i rješenja

IsNull() Nepričekivano se vraća istinitost. U dokumentu ne postoji put za element. Provjerite da XML struktura odgovara očekivanoj shemi prije prelaska.

XmlParsingException na teret Uvod je neformiran ili sadrži nesuportirane entitete. Validirajte XML s vanjskim alatom prije nego što ga proslijedite na Load.

SaveToUtf8() vraća neočekivani izlaz Struktura dokumenta je izmijenjena nakon što su se u Load.-Verificirajte sve intermedijalne informacije. Build operacije ispravno završene.

Nepostoje atributi Pretraživanje atributa je osjetljivo na velike i male slova. Provjerite da se ime atributa podudara točno s onim što se pojavljuje u XML izvoru.

Prazan rezultat iz: GetValue() Tekstni čvorovi koji sadrže samo bijeli prostor mogu vratiti prazan niz. Provjerite sirov XML da potvrdite element ima ne-bijeli prostora sadržaj .

Česta pitanja

Da li je XML sloj namijenjen samo za upotrebu u aplikacijama ili internom korištenju?

U skladu s člankom 1. XmlDocument, XmlElement, i XmlAttribute Mapper klase (WorkbookXmlMapper, WorksheetXmlMapper,U tom slučaju, u skladu s člankom 3. stavkom 1. točka (b) Uredbe (EZ) br. XlsxWorkbookSerializer i nisu namijenjeni za izravnu uporabu.

Mogu li napraviti novi XML dokument od nule?

Da, koristi. XmlDocument::Build da konstruira dokument programski, a zatim koristiti XmlElement i u članku 1. XmlAttribute::MakeAttribute Da dodamo čvorove.

Da li je? XmlDocument Podržava XPath upite?

Ne. Trenutna implementacija pruža samo prelazak elementnim rukovodom; XPath nije podržan.

Što kodiranje radi? SaveToUtf8() Proizvoditi?

Izlaz je uvijek UTF-8 kodiran XML. XML deklaracija (<?xml version="1.0" encoding="UTF-8"?>) uključen je u proizvod.

Mogu li koristiti… XmlDocument Čitati XLSX arhive dijelove?

XLSX arhiva dijelova se upravlja internom putem: XlsxWorkbookSerializer. Ne postoji javni API za ekstrakciju sirovih dijelova arhive. Koristite Workbook za sve operacije XLSX-a u vezi s utovarom/spasivanjem.

Također pogledajte:

 Hrvatski