Praca z XML Processing

Praca z przetwarzaniem XML

Pliki XLSX przechowują swoje dane w częściach XML wewnątrz pakietu OPC. Aspose.Cells FOSS dla .NET udostępnia warstwę parsowania i serializacji XML poprzez cztery klasy mapperów: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper i StylesheetXmlMapper. Każdy mapper implementuje zarówno operacje Read, jak i Write dla odpowiadającej mu części XML. Są to wewnętrzne API infrastrukturalne — większość kodu aplikacji działa wyłącznie poprzez obiekty Workbook i Worksheet.


XML Klasy mapperów

Każdy mapper XML jest odpowiedzialny za jedną część XML struktury XLSX:

MapperXML częśćResponsibility
WorkbookXmlMapperxl/workbook.xmlMetadane na poziomie skoroszytu, odwołania do arkuszy, nazwy zdefiniowane
WorksheetXmlMapperxl/worksheets/sheetN.xmlDane komórek, formuły, hiperłącza, formaty warunkowe, walidacja danych
SharedStringTableXmlMapperxl/sharedStrings.xmlWspólna tabela ciągów dla odduplikowanych wartości ciągów
StylesheetXmlMapperxl/styles.xmlStyle komórek, czcionki, wypełnienia, obramowania, formaty liczb

Każdy mapper udostępnia dwie metody — Read i Write — wywoływane odpowiednio przez potoki ładowania i zapisu biblioteki.


XmlParsingException

XmlParsingException jest zgłaszany, gdy mapper napotyka uszkodzony XML, którego nie można naprawić. Jest podnoszony przed WorkbookLoadException w hierarchii błędów, gdy awaria występuje konkretnie podczas parsowania 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);
}

Wskazówki i najlepsze praktyki

  • Ustaw TryRepairXml = true w LoadOptions, aby włączyć tolerancyjną na błędy ścieżkę parsowania mapera.
  • Przechwytuj XmlParsingException oprócz WorkbookLoadException przy obsłudze plików z zewnętrznych systemów, które mogą generować nieprawidłowe XML.
  • Klasy mapera XML nie są przeznaczone do tworzenia przez kod aplikacji — są wywoływane automatycznie podczas konstrukcji Workbook i Save().
  • Jeśli potrzebujesz zbadać surową zawartość XML w celach diagnostycznych, wyodrębnij plik XLSX jako ZIP i bezpośrednio przeanalizuj odpowiednie części XML.

Typowe problemy

ProblemPrzyczynaPoprawka
XmlParsingException przy ładowaniuNieprawidłowy XML w jednej z części XLSXUstaw TryRepairXml = true w LoadOptions
Brak stylów po dwukierunkowym przetworzeniuStylesheetXmlMapper nie mógł przetworzyć rekordu niestandardowego styluSprawdź LoadDiagnostics.Issues pod kątem wpisów naprawczych związanych ze stylami
Brak współdzielonych ciągów w załadowanym plikuSharedStringTableXmlMapper napotkał uszkodzoną tabelę współdzielonych ciągówWłącz TryRepairXml; sprawdź, czy oryginalny plik ma prawidłowy xl/sharedStrings.xml

FAQ

Czy mogę zaimplementować własny XML mapper?

Klasy mapperów XML są zamkniętą wewnętrzną infrastrukturą. Niestandardowe maperki nie są obsługiwane w bieżącej powierzchni API.

Dlaczego istnieje oddzielny SharedStringTableXmlMapper?

Specyfikacja OOXML oddziela wartości tekstowe do wspólnej tabeli ciągów (xl/sharedStrings.xml), aby usunąć duplikaty powtarzających się ciągów w całym skoroszycie. Mapper obsługuje odczyt i zapis tej tabeli niezależnie.

Czy TryRepairXml = true naprawia wszystkie problemy XML?

TryRepairXml obsługuje problemy możliwe do naprawy, takie jak niezamknięte elementy, brakujące przestrzenie nazw i obcięte wartości. Strukturalnie poprawne, ale semantycznie niezgodne XML (np. uszkodzone odwołania do formuł) mogą nadal powodować XmlParsingException.


API Reference Podsumowanie

KlasaOpis
WorkbookXmlMapperOdczytuje/zapisuje xl/workbook.xml
WorksheetXmlMapperOdczytuje/zapisuje na arkusz XML części
SharedStringTableXmlMapperOdczytuje/zapisuje xl/sharedStrings.xml
StylesheetXmlMapperOdczytuje/zapisuje xl/styles.xml
XmlParsingExceptionRzucany w przypadku nieodwracalnych błędów parsowania XML

Zobacz także

 Polski