Вопрос

Я работаю в приложении .net, где нам нужно генерировать XML-файлы "на лету" на основе набора данных, полученного из базы данных.XML-схема должна быть основана на предоставленном xsd.Я хотел бы знать, есть ли какой-либо способ связать dataset или каждый datarow с xsd.Я не знаю, можно ли это вообще сделать, или, возможно, я думаю об использовании XSD с неправильной точки зрения.Если я ошибаюсь, пожалуйста, поправьте меня и дайте мне знать о наилучшем способе связать данные, полученные из базы данных, с предопределенной схемой.Спасибо.

Обновить:Если мой взгляд на xsd неверен, пожалуйста, пролейте немного света на то, как используются xsd (или, возможно, укажите мне на какие-нибудь полезные ссылки).

Это было полезно?

Решение

В дополнение к решению, предложенному Джоэлом Коэхорном - генерировать типизированные наборы данных или бизнес-объекты из XSD - позвольте мне добавить пару других подходов:

  1. Если вы используете базу данных, поддерживающую тип XML, например Oracle или MS SQL Server, вы можете создавать XML прямо в своих SQL-запросах и извлекать XML непосредственно из базы данных, минуя заполнение dataset.
  2. В случае, если ваша схема базы данных напрямую не сопоставлена с данным XSD, т.е.у вас уже есть типизированный набор данных или набор XML-сериализуемых бизнес-объектов, и эти объекты сериализуются в XML, который не соответствует предоставляемому вам XSD, затем вы можете использовать XSLT для преобразования вашего XML в другой XML-документ, который будет совместим с данным XSD.

Другие советы

Используйте документ схемы в качестве параметра командной строки xsd.exe программа, входящая в состав Visual Studio, для создания файлов классов или типизированных наборов данных, которые вы можете включить в свой проект / решение.Эти классы или наборы данных могут быть сериализованы в xml и будут соответствовать документу схемы, который вы использовали для их создания.

Единственная проблема с этим заключается в том, что оно не является динамичным:вы не можете ждать, пока среда выполнения получит файлы схемы.Но в остальном нет ничего встроенного, что поддерживало бы это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top