2011-08-14 6 views
0

나는 각각에 약 1000 개의 요소가있는 두 개의 XML 문서를 가지고 있으며 둘 다 서로 다른 스키마를 가지고있다. 문서 A를 문서 B에 매핑하려고 시도하고 있으며이 작업을 수행하는 가장 좋은 방법이 무엇인지 알고 싶습니다.하나의 XML 문서를 다른 스키마를 가진 다른 문서로 매핑하는 가장 좋은 방법

현재 문서 A의 모든 요소를 ​​가져 와서 문서 B에 배치 할 일련의 XElements를 만듭니다. 문서 A의 XElements 값을 사용하여 문서 B의 XElements 값을 채우고 있습니다. 그런 다음 새로 생성 된 XElement를 기본 xml 문서에 배치합니다. 이 문서는 외부 요소처럼 기본 요소만을 포함하는 문서 B의 버전을 요약 한 것입니다.

XElement docAName = docA.Descendants(DocANameSpace + "Name").FirstOrDefault(); 
XElement docBName = new XElement("{http://namespace.com}Name", docAName.Value); 
docBTemplate.Descendants(DocBNameSpace + "Names").FirstOrDefault().Add(DocBName); 

는 그러나, 나는 1000 라인의 방법으로 감아 많은 요소가 있고 그냥 실수 같습니다 여기에 몇 가지 예제 코드입니다. 누구나이 문서를 더 잘 매핑 할 수있는 방법에 대한 제안 사항이 있습니까? 나는 스키마가 너무 다르기 때문에 XSLT 변환이 작동하는지 모른다.

편집 : XSL 변환을 살펴본 결과 꽤 많은 작업이 될 것 같습니다. 두 xml 문서는 매우 다르며 엄청난 구조 조정이 필요합니다. 이것은 하나의 요소 값을 다른 요소 값으로 대체하는 단순한 일이 아닙니다. 이름, 네임 스페이스, 위치, 계층 적 구조 및 일부 값을 변경하려고합니다.이 값은 문서 B의 스키마에 맞게 약간 변경해야합니다. XSL Transform은 값과 요소 이름을 바꿀 필요가있는 두 개의 작은 문서를 매핑 할 때 더 잘 사용됩니다. 에이미, 이걸 생각해 봤어?

+0

XSLT는 말하지 않는 한 스키마에 신경 쓰지 않고 아마도 올바른 도구 일 것입니다. 다른 사람이 도움을 줄 수있는 파일과 일치하는 샘플을 보려면 몇 가지 샘플 입력을 표시해야합니다. –

+0

B를 문서화해야 사용하는 스키마에 맞는 유효한 XML이되어야합니다. 나는 xhtml 또는 html 파일을 생성하려고하지 않고있다. 스키마에 맞는 xml 만 유효하다. –

+1

XSLT의 주요 목적은 XML _ XML 변환이지만 다른 _ 출력 _ 형식을 생성 할 수 있습니다. 스키마를 따르는 출력을 생성하는 방법은 XSLT를 코딩하는 방법에 달려 있습니다. XSLT 접근법에 대한 도움이 필요하면 입력 및 원하는 출력에 대한 짧고 대표적인 예를 제공해야합니다. –

답변

1

정확하게 이해한다면 네임 스페이스를 다른 것으로 변경하고 몇 가지 요소를 제거하고 싶습니까?

나는 XML-XML 변환을위한 도구 인 XSLT 변환 - IMHO 을 사용할 것입니다. 스키마가 얼마나 다른지는 중요하지 않습니다. 왜 그렇습니까? 부분 복사본을 만들고 요소 네임 스페이스에 변경 사항을 적용하는 것은 XSLT에서 매우 간단한 작업입니다.

+0

나는 네임 스페이스를 많이 바꾸고있다. 그 코드는 단지 예일뿐입니다. 와 같은 요소가 에 매핑되어야합니다. 네임 스페이스, 요소 이름 및 값은 두 문서에서 모두 다릅니다. –

+0

XSL 변환이 사용하려는 스키마에 따라 유효한 XML 문서를 생성 할 수 있습니까? –

+1

물론 XSLT 출력은 올바른 형식의 XML이며 XSL 변환 코드가 올바른 경우 출력이 유효합니다. 그러나 XSLT 엔진은 이러한 점에서 어떤 검사도 수행하지 않습니다. – Lucero

관련 문제