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 | 공유 문자열 테이블을 읽고 씁니다 |
각 매퍼는 Read 및 Write 메서드를 노출합니다. 이러한 메서드는 XlsxWorkbookSerializer에 의해 내부적으로 호출되며 애플리케이션 코드에서 직접 사용하도록 설계되지 않았습니다.
오류 처리
XML 구문 분석 오류는 XmlParsingException을 발생시킵니다. 신뢰할 수 없거나 잘못된 형식의 XML을 로드할 때 이 예외를 잡으십시오:
try {
doc.Load(xmlContent);
} catch (const XmlParsingException& ex) {
// Handle parse error
}팁 및 모범 사례
XmlElement::IsNull()을(를) 확인한 후 요소 데이터를 액세스하십시오 — 누락된 경로에 있는 요소는 null 핸들을 반환합니다.- 디버깅 또는 중간 XML 상태를 로깅하기 위해 직렬화된 문자열을 얻으려면
XmlDocument::SaveToUtf8()을(를) 사용하십시오. - 응용 프로그램 코드에서 매퍼 클래스(
WorkbookXmlMapper,WorksheetXmlMapper등)를 직접 인스턴스화하지 마십시오 — 대신Workbook::Save와Workbook(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 읽기/쓰기 |