맞춤 XML 마크업을 .NET에서 작업하는 방법

맞춤 XML 마크업을 .NET에서 작업하는 방법

맞춤 XML 마크업을 .NET에서 작업하는 방법

Word 문서는 가시적인 콘텐츠와 함께 사용자 정의 XML 데이터를 포함할 수 있습니다 — 콘텐츠 컨트롤을 바인딩하고, 애플리케이션 별 메타데이터를 저장하거나, 다른 애플리케이션이 추가한 파트를 삽입하는 데 사용되는 데이터입니다. 이 가이드는 해당 데이터를 읽고, 새로운 사용자 정의 XML 파트를 추가하며, 오래된 문서에 여전히 포함될 수 있는 레거시 스마트 태그를 검사하는 방법을 CustomXmlPart, CustomXmlProperty, SmartTag를 사용하여 Aspose.Words FOSS for .NET에서 보여줍니다.


단계별 가이드

1단계: 문서에서 사용자 정의 XML 데이터 읽기

Document.CustomXmlParts은 CustomXmlPartCollection을 반환합니다 — 이는 Word가 XML 매핑된 콘텐츠 컨트롤을 지원하는 데 사용하는 동일한 메커니즘입니다. 컬렉션을 반복하거나 필요한 파트를 이미 알고 있을 경우 GetById(id)를 호출하여 CustomXmlPart을 얻습니다. 각 파트는 Id를 노출하는데, 이는 원시 XML을 보유한 Data 바이트 배열이며, 전체 바이트 비교 없이 데이터 변경 여부를 감지하는 DataChecksum와, 해당 파트와 연관된 XML 스키마를 나열하는 CustomXmlSchemaCollection인 Schemas을 포함합니다.


2단계: 사용자 정의 XML 파트 추가 또는 업데이트

ID 문자열과 XML 내용을 사용하여 CustomXmlPartCollection.Add(id, xml)을(를) 호출하면 파트를 직접 생성할 수 있으며, 별도로 CustomXmlPart을(를) 구성한 뒤 Add(part)에 전달할 수도 있습니다. 데이터를 제거하려면 특정 위치에서 RemoveAt(index)을(를) 사용하거나 모든 파트를 삭제하려면 Clear()을(를) 사용합니다. 문서 간에 사용자 정의 XML 데이터를 복사할 때는 원본 파트에서 원시 XML를 다시 읽고 다시 추가하는 대신 CustomXmlPart.Clone()(또는 컬렉션의 Clone())를 사용하고, 복제본을 대상 문서의 Document.CustomXmlParts에 추가합니다.


3단계: 파트와 연결된 스키마 관리

CustomXmlPart.Schemas은(는) CustomXmlSchemaCollection에 도달하며, 여기서는 파트와 연결된 스키마 URI를 구문 분석된 스키마 객체가 아니라 일반 문자열로 추적합니다. 스키마 URI를 등록하려면 Add(value)을(를) 사용하고, 하나를 삭제하려면 Remove(name) 또는 RemoveAt(index)을(를) 사용하며, 하나를 찾으려면 IndexOf(value)을(를) 사용하고, 모두 제거하려면 Clear()을(를) 사용합니다. Count은(는) 현재 파트와 연결된 스키마 URI 개수를 보고합니다.


4단계: 패키지 수준 사용자 정의 파트 작업

OOXML 패키지의 모든 비가시 파트가 사용자 정의 XML는 아닙니다. Document.PackageCustomParts은(는) CustomPart 객체들의 CustomPartCollection을(를) 반환합니다 — 파일을 수정한 다른 애플리케이션이 추가한 파트와 같이 패키지에 저장된 임의의 파트입니다. 각 CustomPart은 Name, ContentType, RelationshipType 및 Data 바이트 배열과, 내장 콘텐츠가 아니라 외부 참조인지 여부를 나타내는 IsExternal 플래그를 가지고 있습니다. Add(part), RemoveAt(index), Clear()은(는) CustomXmlPartCollection와 동일한 방식으로 컬렉션을 관리합니다. 문서가 가져야 할 파트가 사용자 정의 XML 컬렉션에 나타나지 않을 때는 PackageCustomParts을(를) 확인하십시오 — CustomXmlParts이(가) 아니라.


5단계: 레거시 스마트 태그 및 해당 속성 검사

SmartTag은(는) 인식된 텍스트 주위에 둘러싸인 레거시 Word 스마트 태그를 나타내는 노드 유형(NodeType.SmartTag, SmartTag(doc)로 구성)입니다. 어떤 인식기가 태그를 생성했는지 확인하려면 Element과 Uri를 함께 확인하고, 인식기가 첨부한 구조화된 데이터를 얻기 위해 Properties—CustomXmlPropertyCollection—을 읽습니다. CustomXmlPropertyCollection 내부에서 인덱서(예: properties["MyProp"]) 또는 Contains(name)는 특정 속성을 조회하고, IndexOfKey(name)은 그 위치를 반환하며, Remove(name)/RemoveAt(index)/Clear()은 항목을 제거합니다; 각 CustomXmlProperty는 CustomXmlProperty(name, uri, value)로 구성되고 Name, Uri, Value을(를) 노출합니다. SmartTag가 CompositeNode에서 파생되었기 때문에 다른 노드와 마찬가지로 문서 트리에 참여하며, DocumentVisitor 기반 순회를 위해 Accept(visitor), AcceptStart(visitor), AcceptEnd(visitor)을(를) 지원합니다.


일반적인 문제 및 해결 방법

CustomXmlPartCollection.GetById(id) 사용 가능한 것이 반환되지 않습니다. ID가 현재 포함된 어떤 파트와도 일치하지 않습니다 Document.CustomXmlParts. 컬렉션을 열거하여 ID가 존재하는지 확인하거나, 먼저 다음을 사용해 파트를 추가하십시오 Add(id, xml).

다른 애플리케이션이 추가한 파트는 반복으로 찾을 수 없습니다 CustomXmlParts. Non-XML 패키지 파트는 다음을 통해 노출됩니다 Document.PackageCustomParts, 아니라 CustomXmlParts. 확인하십시오 PackageCustomParts (a CustomPartCollection) 대신.

SmartTag.Properties 태그가 명확히 존재함에도 불구하고 비어 있습니다. 모든 스마트 태그 인식기가 구조화된 속성을 부착하는 것은 아닙니다. 확인하십시오 SmartTag.Element and Uri 특정 속성이 존재할 것이라고 가정하기 전에 어떤 인식기가 태그를 생성했는지 확인하십시오.

사용자 정의 XML 데이터가 바인딩되어야 할 콘텐츠 컨트롤과 관련이 없어 보입니다. 콘텐츠 컨트롤은 자체 데이터 바인딩 구성으로 사용자 정의 XML에 바인딩되며, 모든 것에 자동으로 바인딩되는 것은 아닙니다. CustomXmlPart in Document.CustomXmlParts. 특정 콘텐츠 컨트롤이 실제로 바인딩된 부분을 확인하십시오. 일대일 관계를 가정하지 마십시오.


자주 묻는 질문

문서에 사용자 정의 XML 데이터를 어떻게 추가합니까?

ID 문자열과 XML 콘텐츠를 사용하여 Document.CustomXmlParts.Add(id, xml)를 호출하거나, CustomXmlPart를 별도로 생성한 뒤 Add(part)에 전달하십시오.

CustomXmlPart와 CustomXmlProperty의 차이점은 무엇인가요?

CustomXmlPart은 전체 XML 데이터 섬 — 바이트 배열 페이로드와 연관된 스키마 — 로, Document.CustomXmlParts을 통해 도달합니다. CustomXmlProperty는 단일 이름/값 쌍이며, 일반적으로 문서에서 직접이 아니라 SmartTag.Properties을 통해 도달합니다.

맞춤형 XML 데이터를 한 문서에서 다른 문서로 복사하려면 어떻게 해야 하나요?

소스 CustomXmlPart에서 Clone()을 호출한 다음, 복제본을 대상 문서의 Document.CustomXmlParts에 Add(part)으로 추가합니다.

SmartTag이(가) 무엇이며, 언제 마주치게 될까요?

SmartTag은 스마트 태그 인식기에 의해 인식되고 래핑된 텍스트를 나타내는 레거시 Word 기능 — 문서 노드(NodeType.SmartTag)에 인식기를 식별하는 Element와 Uri이 포함되고, CustomXmlProperty 값들의 Properties 컬렉션을 갖습니다. 이는 이전 Word 버전에서 스마트 태그가 활성화된 상태로 작성하거나 편집된 문서에 나타납니다.

문서에 몇 개의 맞춤형 XML 파트 또는 패키지 파트가 있는지 어떻게 알 수 있나요?

Document.CustomXmlParts (a CustomXmlPartCollection)에서 Count을 읽거나, CustomPartCollection인 Document.PackageCustomParts을 각각 읽습니다.


참조

 한국어