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 XMLResponsabilitate
WorkbookXmlMapperxl/workbook.xmlMetadate la nivel de carte de lucru, referințe la fișe, denumiri definite
WorksheetXmlMapperxl/worksheets/sheetN.xmlDatele din celule, formulele, hiperlink-urile, formatele condiționate, validarea datelor
SharedStringTableXmlMapperxl/sharedStrings.xmlTabelul de șiruri partajate pentru valorile șirinilor desduplicate
StylesheetXmlMapperxl/styles.xmlStiluri 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 în LoadOptions pentru 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. Workbook construcții și Save().
  • 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 dateCauzaFixare
XmlParsingException în încărcareXML defectuos într-una dintre părțile XLSXSetare TryRepairXml = true în LoadOptions
Stile lipsă după întoarcereStylesheetXmlMapper nu a putut analiza o înregistrare de stil personalizatVerifică. LoadDiagnostics.Issues pentru înregistrările de reparații legate de stil
Stringuri partajate lipsesc în fișier încărcatSharedStringTableXmlMapper 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ântDescriere:
WorkbookXmlMapperCiteste/scrie xl/workbook.xml
WorksheetXmlMapperCiteste/scrie partile XML pe folie
SharedStringTableXmlMapperCiteste/scrie xl/sharedStrings.xml
StylesheetXmlMapperCiteste/scrie xl/styles.xml
XmlParsingExceptionAruncate pe defectele de parcare XML irecuperabile
 Română