Werken met XML Processing
Werken met XML Processing
XLSX-bestanden slaan hun gegevens op in XML-onderdelen binnen een OPC-pakket. Aspose.Cells FOSS voor .NET biedt de XML parser- en serialisatielaag aan via vier mapper-klassen: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper en StylesheetXmlMapper. Elke mapper implementeert zowel Read als Write operaties voor het bijbehorende XML-onderdeel. Dit zijn interne infrastructuur-API’s — de meeste toepassingscode werkt volledig via de Workbook en Worksheet objecten.
XML Mapper-klassen
Elke XML mapper is verantwoordelijk voor één XML-onderdeel van de XLSX-structuur:
| Mapper | XML deel | Responsibility |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Metadata op werkboekniveau, bladverwijzingen, gedefinieerde namen |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Celgegevens, formules, hyperlinks, voorwaardelijke opmaak, gegevensvalidatie |
SharedStringTableXmlMapper | xl/sharedStrings.xml | Gedeelde stringtabel voor gededupliceerde tekenreekswaarden |
StylesheetXmlMapper | xl/styles.xml | Celstijlen, lettertypen, vullingen, randen, getalformaten |
Elke mapper stelt twee methoden beschikbaar — Read en Write — die respectievelijk door de laad- en opslaan-pijplijnen van de bibliotheek worden aangeroepen.
XmlParsingException
XmlParsingException wordt gegooid wanneer een mapper een misvormde XML tegenkomt die niet kan worden gerepareerd. Het wordt opgegooid vóór WorkbookLoadException in de fouthiërarchie wanneer de fout specifiek optreedt tijdens het parseren van XML.
using Aspose.Cells_FOSS;
var opts = new LoadOptions
{
TryRepairPackage = true,
TryRepairXml = true,
};
try
{
var wb = new Workbook("malformed.xlsx", opts);
Console.WriteLine("Loaded: " + wb.Worksheets.Count + " sheet(s)");
}
catch (XmlParsingException ex)
{
Console.WriteLine("XML parse error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Load error: " + ex.Message);
}Tips en best practices
- Stel
TryRepairXml = trueinLoadOptionsin om het fouttolerante parsepad van de mapper in te schakelen. - Vang
XmlParsingExceptionop naastWorkbookLoadExceptionbij het verwerken van bestanden van externe systemen die mogelijk misvormde XML produceren. - De XML mapperklassen zijn niet bedoeld om door applicatiecode te worden geïnstantieerd — ze worden automatisch aangeroepen tijdens de constructie van
WorkbookenSave(). - Als je de ruwe XML-inhoud voor diagnostiek moet inspecteren, extraheer dan de XLSX als een ZIP en bekijk de relevante XML-onderdelen direct.
Veelvoorkomende problemen
| Probleem | Oorzaak | Oplossing |
|---|---|---|
XmlParsingException bij het laden | Misvormde XML in een van de XLSX-onderdelen | Stel TryRepairXml = true in LoadOptions |
| Ontbrekende stijlen na round-trip | StylesheetXmlMapper kon een aangepast stijlrecord niet verwerken | Controleer LoadDiagnostics.Issues op stijlgerelateerde reparatie-items |
| Shared strings ontbreken in geladen bestand | SharedStringTableXmlMapper kwam een corrupte shared string-tabel tegen | Schakel TryRepairXml in; controleer of het oorspronkelijke bestand een geldige xl/sharedStrings.xml heeft |
FAQ
Kan ik mijn eigen XML mapper implementeren?
De XML mapperklassen vormen een afgesloten interne infrastructuur. Aangepaste mappers worden niet ondersteund in het huidige API oppervlak.
Waarom is er een aparte SharedStringTableXmlMapper?
De OOXML-specificatie scheidt tekenreekswaarden in een gedeelde tekenreeks-tabel (xl/sharedStrings.xml) om herhaalde tekenreeksen in de werkmap te dedupliceren. De mapper behandelt het lezen en schrijven van deze tabel onafhankelijk.
Lost TryRepairXml = true alle XML-problemen op?
TryRepairXml behandelt herstelbare problemen zoals niet-gesloten elementen, ontbrekende namespaces en afgekorte waarden. Structureel geldige maar semantisch inconsistente XML (bijv. kapotte formule-referenties) kan nog steeds XmlParsingException veroorzaken.
API Reference Samenvatting
| Klasse | Beschrijving |
|---|---|
WorkbookXmlMapper | Leest/schrijft xl/workbook.xml |
WorksheetXmlMapper | Leest/schrijft per blad XML onderdelen |
SharedStringTableXmlMapper | Leest/schrijft xl/sharedStrings.xml |
StylesheetXmlMapper | Leest/schrijft xl/styles.xml |
XmlParsingException | Gegooid bij onherstelbare XML parse-fouten |