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 Mapper | Responsibility |
|---|---|
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žijteWorkbook::SaveaWorkbook(filePath)místo toho. XmlParsingExceptionje 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ém | Příčina | Oprava |
|---|---|---|
IsNull() vrací true | Prvek 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 XML | Ověřte vstup XML před předáním do Load |
| Výstup mapovače se liší od vstupu | Mutace modelu před uložením | Ujistěte se, že jsou všechny změny modelu zaznamenány před voláním Save |
Shrnutí API Reference
| Třída/Metoda | Popis: |
|---|---|
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 |
XmlParsingException | Vyvoláno při neplatném vstupu XML |
WorksheetXmlMapper | Interní pracovní list XML čtení/zápis |
WorkbookXmlMapper | Interní sešit XML čtení/zápis |