XML 처리 작업

XML 처리를 사용하여 작업

Aspose.Cells FOSS for C++는 XLSX 파일을 구성하는 Open XML 파트를 읽고 쓰기 위해 가벼운 내부 XML 레이어를 사용합니다. XmlDocument, XmlElement, 및 XmlAttribute 클래스가 이 레이어의 핵심을 이룹니다.


XML 문서 로드

메모리 내 문서 트리로 XML 문자열 또는 파일을 구문 분석하려면 XmlDocument::Load를 사용하십시오:

#include "aspose/cells_foss/XmlDocument.h"

using namespace Aspose::Cells_FOSS;

// Load from string content
XmlDocument doc;
doc.Load("<root><item key=\"a\">value</item></root>");

XML 빌드 및 저장

프로그래밍 방식으로 XML 문서를 만들려면 XmlDocument::Build를 사용하고, UTF-8 문자열로 다시 직렬화하려면 XmlDocument::SaveToUtf8를 사용하십시오:

XmlDocument doc;
// Build the document structure
auto xml = doc.SaveToUtf8();

요소 탐색

XmlElement은(는) 요소 값, 자식 및 속성에 대한 경량 핸들 기반 접근을 제공합니다. 기본 생성된 요소는 IsNull() == true을 반환하며, 이는 안전한 null 검사에 사용할 수 있습니다:

XmlElement root = doc.GetRootElement();
if (!root.IsNull()) {
    // Traverse children via GetAttributes
    auto attrs = root.GetAttributes();
}

속성 작업

XmlAttribute은(는) 요소의 속성 이름 및 값 쌍에 접근할 수 있게 합니다. 새 속성을 만들려면 XmlAttribute::MakeAttribute(name, value)을 사용하십시오:

XmlAttribute attr = XmlAttribute::MakeAttribute("key", "value");
bool isNull = attr.IsNull();

내부 XML 매퍼

이 라이브러리는 전용 매퍼 클래스를 사용하여 메모리 내 스프레드시트 모델 객체를 XML 표현으로 변환하고 그 반대로 변환합니다. 이는 직렬화 레이어 내부에서 사용됩니다:

Mapper 클래스Responsibility
WorkbookXmlMapper워크북 관계 부분을 읽고 씁니다
WorksheetXmlMapper개별 워크시트 XML 파트를 읽고 씁니다
StylesheetXmlMapper스타일 파트를 읽고 씁니다
SharedStringTableXmlMapper공유 문자열 테이블을 읽고 씁니다

각 매퍼는 ReadWrite 메서드를 노출합니다. 이러한 메서드는 XlsxWorkbookSerializer에 의해 내부적으로 호출되며 애플리케이션 코드에서 직접 사용하도록 설계되지 않았습니다.


오류 처리

XML 구문 분석 오류는 XmlParsingException을 발생시킵니다. 신뢰할 수 없거나 잘못된 형식의 XML을 로드할 때 이 예외를 잡으십시오:

try {
    doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
    // Handle parse error
}

팁 및 모범 사례

  • XmlElement::IsNull()을(를) 확인한 후 요소 데이터를 액세스하십시오 — 누락된 경로에 있는 요소는 null 핸들을 반환합니다.
  • 디버깅 또는 중간 XML 상태를 로깅하기 위해 직렬화된 문자열을 얻으려면 XmlDocument::SaveToUtf8()을(를) 사용하십시오.
  • 응용 프로그램 코드에서 매퍼 클래스(WorkbookXmlMapper, WorksheetXmlMapper 등)를 직접 인스턴스화하지 마십시오 — 대신 Workbook::SaveWorkbook(filePath)을(를) 사용하십시오.
  • 잘못된 XML이 발생하면 XmlParsingException이(가) 발생합니다; 외부 XML 로드를 항상 try/catch 블록으로 감싸십시오.

일반적인 문제

문제원인수정
IsNull()는 true를 반환합니다예상 경로에서 요소를 찾을 수 없습니다탐색하기 전에 XML 구조를 확인합니다
로드 시 XmlParsingException잘못된 형식이거나 비-UTF-8 XML입력 XML을 Load에 전달하기 전에 검증하십시오.
Mapper 출력이 입력과 다릅니다.저장하기 전 모델 변형Save를 호출하기 전에 모든 모델 변경 사항이 커밋되었는지 확인하십시오.

API Reference 요약

클래스/메서드설명
XmlDocument::Load(content)XML 문자열을 파싱하십시오.
XmlDocument::Build()문서를 프로그래밍 방식으로 생성합니다
XmlDocument::SaveToUtf8()문서를 UTF-8 문자열로 직렬화합니다
XmlElement::IsNull()요소 핸들이 유효한지 확인합니다
XmlElement::GetValue()요소의 텍스트 내용을 가져옵니다.
XmlElement::GetAttributes()속성 컬렉션을 가져옵니다
XmlAttribute::IsNull()속성 핸들이 유효한지 확인하십시오
XmlAttribute::MakeAttribute(name, value)새 속성 핸들을 생성합니다
XmlParsingException잘못된 형식의 XML 입력에 대해 발생합니다
WorksheetXmlMapper내부 워크시트 XML 읽기/쓰기
WorkbookXmlMapper내부 워크북 XML 읽기/쓰기

참조

 한국어