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.