Práce s XML Processing

Práce s XML Processing

Práce s XML zpracováním

Aspose.Cells FOSS pro C++ používá lehkou interní vrstvu XML pro čtení a zápis částí Open XML, které tvoří soubor XLSX. Třídy XmlDocument, XmlElement a XmlAttribute tvoří jádro této vrstvy.


Načítání XML dokumentu

Použijte XmlDocument::Load k parsování řetězce nebo souboru XML do paměťového stromu dokumentu:

#include "aspose/cells_foss/XmlDocument.h"

using namespace Aspose::Cells_FOSS;

// Load from string content
XmlDocument doc;
doc.Load("<root><item key=\"a\">value</item></root>");

Vytváření a ukládání XML

Použijte XmlDocument::Build k programovému vytvoření dokumentu XML a XmlDocument::SaveToUtf8 k jeho serializaci zpět do řetězce UTF-8:

XmlDocument doc;
// Build the document structure
auto xml = doc.SaveToUtf8();

Procházení prvků

XmlElement poskytuje lehký přístup založený na handlech k hodnotám elementů, jejich potomkům a atributům. Výchozí konstrukce elementů vrací IsNull() == true, který lze použít jako bezpečnou kontrolu null:

XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
    // Traverse children via GetAttributes
    auto attrs = root.GetAttributes();
}

Práce s atributy

XmlAttribute poskytuje přístup k dvojicím názvu a hodnoty atributu na elementu. Použijte XmlAttribute::MakeAttribute(name, value) k vytvoření nových atributů:

XmlAttribute attr = XmlAttribute::MakeAttribute("key", "value");
bool isNull = attr.IsNull();

Interní XML mapovače

Knihovna používá vyhrazené třídy mapovačů k převodu objektů modelu tabulky v paměti na a z jejich XML reprezentací. Tyto jsou interní pro vrstvu serializace:

Třída MapperResponsibility
WorkbookXmlMapperČte a zapisuje část vztahů sešitu
WorksheetXmlMapperČte a zapisuje jednotlivé části listu XML
StylesheetXmlMapperČte a zapisuje část stylů
SharedStringTableXmlMapperČte a zapisuje tabulku sdílených řetězců

Každý mapovač vystavuje metody Read a Write. Tyto jsou volány interně XlsxWorkbookSerializer a nejsou určeny pro přímé použití v aplikačním kódu.


Zpracování chyb

Chyby při parsování XML vyhazují XmlParsingException. Zachyťte tuto výjimku při načítání nedůvěryhodných nebo poškozených XML:

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

Tipy a osvědčené postupy

  • Zkontrolujte XmlElement::IsNull() před přístupem k datům elementu — elementy na chybějících cestách vrací null handle.
  • Použijte XmlDocument::SaveToUtf8() k získání serializovaného řetězce pro ladění nebo zaznamenání mezilehlého stavu XML.
  • Nevytvářejte instance mapper tříd (WorkbookXmlMapper, WorksheetXmlMapper, etc.) přímo v aplikačním kódu — použijte Workbook::Save a Workbook(filePath) místo toho.
  • XmlParsingException je vyvolán při poškozeném XML; vždy obalte načítání externích XML do bloku try/catch.

Běžné problémy

ProblémPříčinaOprava
IsNull() vrací truePrvek nebyl nalezen na očekávané cestěOvěřte strukturu XML před průchodem
XmlParsingException při načítáníPoškozený nebo ne-UTF-8 XMLOvěřte vstup XML před předáním do Load
Výstup mapovače se liší od vstupuMutace modelu před uloženímUjistěte se, že jsou všechny změny modelu zaznamenány před voláním Save

Shrnutí API Reference

Třída/MetodaPopis:
XmlDocument::Load(content)Analyzovat řetězec XML
XmlDocument::Build()Vytvořit dokument programově
XmlDocument::SaveToUtf8()Serializovat dokument do řetězce UTF-8
XmlElement::IsNull()Zkontrolujte, zda je platná rukojeť prvku
XmlElement::GetValue()Získá textový obsah elementu
XmlElement::GetAttributes()Získá kolekci atributů
XmlAttribute::IsNull()Zkontrolujte, zda je platná rukojeť atributu
XmlAttribute::MakeAttribute(name, value)Vytvořte novou rukojeť atributu
XmlParsingExceptionVyvoláno při neplatném vstupu XML
WorksheetXmlMapperInterní pracovní list XML čtení/zápis
WorkbookXmlMapperInterní sešit XML čtení/zápis

Viz také:

 Čeština