XML 프로세싱 사용하기

XML 프로세싱 사용하기

XML 처리 작업

XLSX 파일은 OPC 패키지 내부의 XML 파트에 데이터를 저장합니다. Aspose.Cells .NET용 FOSS는 XML 파싱 및 직렬화 계층을 네 개의 매퍼 클래스: WorkbookXmlMapper, WorksheetXmlMapper, SharedStringTableXmlMapper, StylesheetXmlMapper을 통해 노출합니다. 각 매퍼는 해당 XML 파트에 대해 ReadWrite 작업을 모두 구현합니다. 이것들은 내부 인프라 API이며 — 대부분의 애플리케이션 코드는 WorkbookWorksheet 객체를 통해 완전히 작동합니다.


XML 매퍼 클래스

각 XML 매퍼는 XLSX 구조의 XML 파트 하나를 담당합니다:

MapperXML 부분Responsibility
WorkbookXmlMapperxl/workbook.xml통합 문서 수준 메타데이터, 시트 참조, 정의된 이름
WorksheetXmlMapperxl/worksheets/sheetN.xml셀 데이터, 수식, 하이퍼링크, 조건부 서식, 데이터 유효성 검사
SharedStringTableXmlMapperxl/sharedStrings.xml중복 제거된 문자열 값을 위한 공유 문자열 테이블
StylesheetXmlMapperxl/styles.xml셀 스타일, 글꼴, 채우기, 테두리, 숫자 형식

각 매퍼는 두 개의 메서드 — ReadWrite — 를 제공하며, 이는 각각 라이브러리의 로드 및 저장 파이프라인에 의해 호출됩니다.


XmlParsingException

XmlParsingException은(는) 매퍼가 복구할 수 없는 손상된 XML을 만나면 발생합니다. 이 예외는 XML 파싱 중에 오류가 발생했을 때 오류 계층에서 WorkbookLoadException보다 먼저 발생합니다.

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);
}

팁 및 모범 사례

  • LoadOptionsTryRepairXml = true을 설정하여 매퍼의 내결함 파싱 경로를 활성화합니다.
  • 외부 시스템에서 생성될 수 있는 잘못된 XML를 포함하는 파일을 처리할 때 WorkbookLoadException 외에도 XmlParsingException을 잡습니다.
  • XML 매퍼 클래스는 애플리케이션 코드에서 인스턴스화하도록 설계되지 않았으며 — Workbook 생성 및 Save() 중에 자동으로 호출됩니다.
  • 진단을 위해 원시 XML 콘텐츠를 검사해야 하는 경우, XLSX를 ZIP로 추출하고 관련 XML 부분을 직접 확인하십시오.

일반적인 문제

문제원인수정
XmlParsingException 로드 시XLSX 파트 중 하나에 형식이 잘못된 XMLLoadOptionsTryRepairXml = true를 설정합니다
라운드 트립 후 스타일이 누락되었습니다StylesheetXmlMapper이(가) 사용자 정의 스타일 레코드를 파싱하지 못했습니다스타일 관련 복구 항목에 대해 LoadDiagnostics.Issues을(를) 확인하십시오
로드된 파일에 공유 문자열이 없습니다SharedStringTableXmlMapper이(가) 손상된 공유 문자열 테이블을 발견했습니다TryRepairXml을(를) 활성화하십시오; 원본 파일에 유효한 xl/sharedStrings.xml이 있는지 확인하십시오

FAQ

내가 직접 XML 매퍼를 구현할 수 있나요?

XML 매퍼 클래스는 봉인된 내부 인프라입니다. 현재 API 표면에서는 사용자 정의 매퍼가 지원되지 않습니다.

왜 별도의 SharedStringTableXmlMapper가 있나요?

OOXML 사양은 문자열 값을 공유 문자열 테이블(xl/sharedStrings.xml)로 분리하여 워크북 전체에서 반복되는 문자열을 중복 제거합니다. 매퍼는 이 테이블을 독립적으로 읽고 쓰는 작업을 처리합니다.

모든 XML 문제를 TryRepairXml = true가 해결합니까?

TryRepairXml는 닫히지 않은 요소, 누락된 네임스페이스, 잘린 값과 같은 복구 가능한 문제를 처리합니다. 구조적으로는 유효하지만 의미적으로 일관되지 않은 XML(예: 깨진 수식 참조)는 여전히 XmlParsingException를 일으킬 수 있습니다.


API Reference 요약

클래스설명
WorkbookXmlMapper읽기/쓰기 xl/workbook.xml
WorksheetXmlMapper읽기/쓰기 시트당 XML 파트
SharedStringTableXmlMapper읽기/쓰기 xl/sharedStrings.xml
StylesheetXmlMapper읽기/쓰기 xl/styles.xml
XmlParsingException복구 불가능한 XML 파싱 실패 시 발생합니다.

참조

 한국어