Lucrarea cu procesare XML
Lucrarea cu procesare XML
Fișierele XLSX își stochează datele în părți XML într-un pachet OPC. Aspose.Cells FOSS pentru .NET expune stratul de analizare și serializare XML prin patru clase mapper: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, și StylesheetXmlMapper.Fiecare maper implementează ambele. Read și de: Write Acestea sunt API-uri interne de infrastructură majoritatea codului aplicației funcționează în întregime prin intermediul sistemelor XML. Workbook și de: Worksheet Obiecte.
Clasele XML Mapper
Fiecare mapător XML este responsabil pentru o parte XML a structurii XLSX:
| Mapper (mapătoare) | Partea XML | Responsabilitate |
|---|---|---|
WorkbookXmlMapper | xl/workbook.xml | Metadate la nivel de carte de lucru, referințe la fișe, denumiri definite |
WorksheetXmlMapper | xl/worksheets/sheetN.xml | Datele din celule, formulele, hiperlink-urile, formatele condiționate, validarea datelor |
SharedStringTableXmlMapper | xl/sharedStrings.xml | Tabelul de șiruri partajate pentru valorile șirinilor desduplicate |
StylesheetXmlMapper | xl/styles.xml | Stiluri de celule, fonturi, umpleri, margini, formate numere |
Fiecare cartograf expune două metode Read și de: Write invocate de sarcina bibliotecii și respectiv să economisească conducte.
XmlParsingException
XmlParsingException este aruncat atunci când un mapper întâlnește XML malformate care nu poate fi reparat. Este ridicată înainte de a se face o operațiune de tip “scrolling” sau “scribing”. WorkbookLoadException în ierarhia erorilor atunci când se produce defecțiunea în timpul analizării 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);
}Sfaturi şi cele mai bune practici
- Setare
TryRepairXml = trueînLoadOptionspentru a activa ruta de analizare tolerantă la defecte. - Captura
XmlParsingExceptionîn plus față de:WorkbookLoadExceptionîn cazul manipularii fișierelor provenite de la sisteme externe care pot produce XML defectuos format. - Clasele XML mapper nu sunt destinate să fie instantiate de codul aplicației ele sunt invocate automat în timpul procesului.
Workbookconstrucții șiSave(). - Dacă trebuie să inspectați conținutul XML brut pentru diagnostic, extrageți XLSX ca un ZIP și examinați direct părțile relevante ale XML.
Probleme comune
| Numărul de date | Cauza | Fixare |
|---|---|---|
XmlParsingException în încărcare | XML defectuos într-una dintre părțile XLSX | Setare TryRepairXml = true în LoadOptions |
| Stile lipsă după întoarcere | StylesheetXmlMapper nu a putut analiza o înregistrare de stil personalizat | Verifică. LoadDiagnostics.Issues pentru înregistrările de reparații legate de stil |
| Stringuri partajate lipsesc în fișier încărcat | SharedStringTableXmlMapper a întâlnit o tabelă de șiruri partajate coruptă | Abilitare TryRepairXml;Verificați fișierul original are o copie valabilă. xl/sharedStrings.xml |
FAQ
Pot să-mi implement propriul mapator XML?
Clasele XML mapper sunt infrastructură internă sigilată. Maperele personalizate nu sunt suportate în suprafața API curentă .
De ce este un separat SharedStringTableXmlMapper?
Specificația OOXML separă valorile de șir într-o tablă comună (xl/sharedStrings.xml) pentru a de-duplica șiruri repetate în cartea de lucru. Mapper se ocupă cu citirea și scrierea acestei tabele independent.
- Da. Nu, nu e aşa. TryRepairXml = true rezolva toate problemele XML?
TryRepairXml XML-ul structural valid, dar semantic incoerent (de exemplu referințele la formule rupte) poate încă provoca o mare diferență între formatele de bază și cele ale sistemului. XmlParsingException.
Rezultatele de la data aplicării.
| Clasa de învăţământ | Descriere: |
|---|---|
WorkbookXmlMapper | Citeste/scrie xl/workbook.xml |
WorksheetXmlMapper | Citeste/scrie partile XML pe folie |
SharedStringTableXmlMapper | Citeste/scrie xl/sharedStrings.xml |
StylesheetXmlMapper | Citeste/scrie xl/styles.xml |
XmlParsingException | Aruncate pe defectele de parcare XML irecuperabile |