Jak pracovat s XML zpracováním v C++

Jak pracovat s XML zpracováním v C++

Aspose.Cells FOSS pro C++ zahrnuje lehkou vrstvu zpracování XML, používanou interně pro čtení a zápis částí Open XML. Třídy XmlDocument, XmlElement a XmlAttribute poskytují programový přístup k datům XML. Tento průvodce pokrývá načítání XML, procházení elementů a serializaci dokumentů.

Návod krok za krokem

Krok 1: Nastavte sestavení

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)

Krok 2: Zahrňte hlavičkové soubory

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

using namespace Aspose::Cells_FOSS;

Krok 3: Načtěte XML dokument

Použijte XmlDocument::Load k parsování řetězce XML do stromu dokumentu v paměti:

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

Krok 4: Zkontrolujte nulové prvky

XmlElement používá model založený na handlech — prvek vrácený z chybějící cesty je null. Vždy zkontrolujte IsNull() před přístupem k datům:

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

Krok 5: Procházejte atributy

Použijte XmlElement::GetAttributes() k získání kolekce atributů. Každý handle atributu odhaluje svůj název a hodnotu:

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

Krok 6: Serializovat na řetězec UTF-8

Použijte XmlDocument::SaveToUtf8() k získání serializovaného XML:

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

Krok 7: Zpracovat chyby parsování

Zabalte XmlDocument::Load do bloku try/catch při zpracování nedůvěryhodných XML:

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

Časté problémy a opravy

IsNull() vrací true nečekaně Cesta k elementu v dokumentu neexistuje. Ověřte, že struktura XML odpovídá očekávanému schématu před průchodem.

XmlParsingException při načtení Vstup je poškozený nebo obsahuje nepodporované entity. Ověřte XML pomocí externího nástroje před jeho předáním Load.

SaveToUtf8() vrací nečekaný výstup Struktura dokumentu byla upravena po Load. Ověřte všechny mezilehlé Build operace byly dokončeny správně.

Atributy nebyly nalezeny Vyhledávání atributu rozlišuje velká a malá písmena. Ověřte, že název atributu přesně odpovídá tomu, jak se objevuje ve zdroji XML.

Prázdný výsledek z GetValue() Textové uzly, které obsahují pouze bílé znaky, mohou vracet prázdný řetězec. Zkontrolujte surový XML, abyste potvrdili, že prvek má obsah jiný než bílé znaky.

Často kladené otázky

Je vrstva XML určena pro použití v aplikaci nebo pouze pro interní použití?

Třídy XmlDocument, XmlElement a XmlAttribute jsou součástí veřejného API a mohou být použity přímo. Mapperové třídy (WorkbookXmlMapper, WorksheetXmlMapper atd.) jsou interní pomocníci volaní XlsxWorkbookSerializer a nejsou určeny pro přímé použití.

Mohu vytvořit nový dokument XML od nuly?

Ano. Použijte XmlDocument::Build k programovému vytvoření dokumentu, poté použijte XmlElement a XmlAttribute::MakeAttribute k přidání uzlů.

Podporuje XmlDocument dotazy XPath?

Ne. Aktuální implementace poskytuje pouze průchod pomocí manipulátorů elementů; XPath není podporováno.

Jaké kódování vytváří SaveToUtf8()?

Výstup je vždy UTF-8 kódovaný XML. Deklarace XML (<?xml version="1.0" encoding="UTF-8"?>) je zahrnuta ve výstupu.

Mohu použít XmlDocument ke čtení částí archivu XLSX?

Části archivu XLSX jsou interně spravovány XlsxWorkbookSerializer. Neexistuje veřejné API pro extrakci surových částí archivu. Použijte Workbook pro všechny operace načítání/ukládání XLSX.

Viz také:

 Čeština