Лучший способ отобразить один XML-документ на другой, имеющий разные схемы - PullRequest
0 голосов
/ 15 августа 2011

У меня есть два XML-документа, каждый из которых содержит около 1000 элементов, и оба имеют разные схемы.Я пытаюсь сопоставить документ A с документом B и хотел знать, каким будет лучший способ сделать это.

В настоящее время я извлекаю все элементы из документа A, а затем создаю серию элементов XElements для помещения в документ B. Я использую значения из XElements документа A для заполнения значений XElements документа B.Затем я помещаю эти недавно созданные XElements в базовый 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 будет лучше использовать при отображении двух небольших документов, где вам просто нужно поменять местами некоторые значения и имена элементов.Эми, я правильно подумала об этом?

1 Ответ

1 голос
/ 15 августа 2011

Если я вас правильно понимаю, вы хотите изменить пространство имен на другое и удалить несколько элементов?

Я бы использовал преобразование XSLT - ИМХО инструмент для XML-to-XML преобразование.Насколько разные схемы на самом деле не имеет значения, зачем это нужно?Создание частичных копий и внесение изменений в пространство имен элемента - очень простая задача в XSLT.

...