Cum să lucrați cu procesarea XML în 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 clasele oferă acces programatic la datele XML. Acest ghid acoperă încărcarea XML, traversarea elementelor și serializarea documentelor.
Ghid pas cu pas
Pasul 1: Construirea
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)Pasul 2: Includeţi şi titlurile de pe pagină.
#include "aspose/cells_foss/XmlDocument.h"
#include "aspose/cells_foss/XmlElement.h"
#include "aspose/cells_foss/XmlAttribute.h"
using namespace Aspose::Cells_FOSS;Pasul 3: Încărcarea unui document XML
Utilizare: XmlDocument::Load pentru a analiza un șir XML în arborele documentelor din memorie:
int main() {
XmlDocument doc;
doc.Load("<root><item key=\"a\">Hello</item><item key=\"b\">World</item></root>");
return 0;
}Pasul 4: Verificați dacă există elemente nul
XmlElement folosește un model bazat pe mâner un element returnat dintr-o cale lipsă este nul. Verificați întotdeauna IsNull() înainte de a accesa datele:
XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
std::string val = root.GetValue();
}Pasul 5: Atribute transversale
Utilizare: XmlElement::GetAttributes() Fiecare atribut de manipulare expune numele și valoarea sa:
auto attrs = root.GetAttributes();
for (auto& attr : attrs) {
bool isNull = attr.IsNull();
}Pasul 6: Serializare în UTF-8 String
Utilizare: XmlDocument::SaveToUtf8() pentru a obține XML serializat:
std::string xml = doc.SaveToUtf8();Pasul 7: Gestionarea erorilor de analiză
Ambalaj XmlDocument::Load în un bloc try/catch atunci când se prelucrează XML neconfident:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle malformed XML
}Probleme comune şi soluţii
IsNull() se întoarce adevărat neaşteptat. Calea elementului nu există în document. Verificați structura XML corespunde schema așteptată înainte de traversare.
XmlParsingException în încărcare Intrarea este defectuoasă sau conține entități nesuportate. Validați XML-ul cu un instrument extern înainte de a-l trece la Load.
SaveToUtf8() returnă ieșire neașteptată Structura documentului a fost modificată după ce Load.Verifică toate intermediarele . Build operațiuni efectuate în mod corespunzător.
Atribute ne gasite Căutarea atributului este sensibilă la case. Verificați că numele atribuitului se potrivește exact așa cum apare în sursa XML.
Rezultat gol din GetValue() Nodurile de text care conțin doar spațiu alb pot returna un șir gol. Verificați XML-ul brut pentru a confirma că elementul are conținut non-spațiul alb.
Întrebări frecvente
Este stratul XML destinat utilizării în aplicații sau numai pentru uz intern?
În ceea ce priveşte XmlDocument, XmlElement, și XmlAttribute clasele mapper fac parte din API publică și pot fi utilizate direct.WorkbookXmlMapper, WorksheetXmlMapper, etc.) sunt ajutoare interne, numite de către XlsxWorkbookSerializer și nu sunt destinate utilizării directe.
Pot să construiesc un nou document XML de la zero?
Da, foloseşte-l. XmlDocument::Build pentru a construi un document programatic, apoi utilizați XmlElement și de: XmlAttribute::MakeAttribute să adaugăm noduri.
- Da. Nu, nu e aşa. XmlDocument Suport de interogări XPath?
Nu. Implementarea curentă oferă doar traversare elementului; XPath nu este suportat.
Ce face codarea SaveToUtf8() Să producă?
Exportația este întotdeauna XML codificat UTF-8. Declarația XML (<?xml version="1.0" encoding="UTF-8"?>) este inclusă în producție.
Pot folosi … XmlDocument să citesc părţi din arhiva XLSX?
Părțile de arhivă XLSX sunt gestionate intern de către: XlsxWorkbookSerializer. Nu există API public pentru a extrage părți de arhivă brute. Utilizaţi Workbook pentru toate operațiunile de încărcare/salvare XLSX.