Создание DataTables из XSD с комплексными типами, определенными в нескольких файлах XSD в C # .net 4 - PullRequest
2 голосов
/ 20 июля 2011

У меня есть куча XSD от https://github.com/XeroAPI/XeroAPI-Schemas/tree/master/v2.00

Мне нужно сделать две вещи:

  1. Создайте таблицы для каждого типа, мой первый - для Контакта в Contact.xsd.
  2. Когда таблица заполнена, мне нужно вернуть XML из таблицы, чтобы его можно было отправить как запрос REST.

Я не могу пройти мимо пункта 1: (

Я отметил все эти XSD как встроенные ресурсы в моем проекте .net C #

Затем я использую отражение для загрузки XSD с использованием DataSet.ReadXmlSchema (ContactXsdStream), но этот XSD ссылается на типы, указанные в BaseTypes.xsd, и выдает ошибку «Неопределенный complexType« DataContractBase »используется в качестве базы для сложного типа расширение».

var assembly = Assembly.GetExecutingAssembly();
var dataset = new DataSet();
var manifestResourceStream = assembly.GetManifestResourceStream(schemaName);
if (manifestResourceStream == null)
  throw new FileNotFoundException(string.Format("Unable to find schema resource {0}", schemaName));

using (var textStreamReader = new StreamReader(manifestResourceStream))
{
  dataset.ReadXmlSchema(textStreamReader);
  textStreamReader.Close();
}
return dataset;

Вся помощь приветствуется

Дополнительные замечания

Я понимаю, что нет сложного типа контакта, который напрямую не отображается в виде одной таблицы, однако мне может понадобиться встроить сложные типы, такие как Address, в строку XML в таблицу данных.

Причина, по которой мне нужны простые типы, заключается в том, что DataTables передаются в API синхронизации данных (Simego DataSync Studio). Этот инструмент синхронизации позволяет мне выполнять двустороннюю синхронизацию с CRM, SharePoint, Excel и другими источниками данных. Я буду использовать другие структуры синхронизации, если это будет уместно, и любые другие рекомендации приветствуются.

С уважением Si

1 Ответ

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

Когда ваш Xsd включает в себя другие Xsd-файлы, эти файлы должны существовать в соответствующих местах на вашем диске.

Даже когда вы извлекаете основной xsd из ресурса и передаете его ReadXmlSchema в виде потока или простой строки, включенные схемы должны существовать в виде файлов в указанном месте относительно вашего текущего рабочего каталога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...