Как создать XML / XSD из таблицы SQL с несколькими таблицами - PullRequest
0 голосов
/ 28 октября 2009

Как создать XML / XSD из таблицы SQL с несколькими таблицами

я хочу создать схему XML из базы данных (или схемы базы данных)

Эта запись имеет интересный код

Особенно

DataSet results = new DataSet();

SqlCommand command = new SqlCommand("SELECT * FROM table", new SqlConnection(connectionString));

SqlDataAdapter sqlAdapter = new SqlDataAdapter(command);

sqlAdapter.FillSchema(results, SchemaType.Mapped);//Fills dataset with schema from query
results.WriteXmlSchema(mySchema);

Но как мне сгенерировать эту XML-схему из нескольких таблиц? Если я просто сделаю

Select * from table1,table2

Все данные находятся в одном большом объекте в XML

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

1 Ответ

0 голосов
/ 28 октября 2009

Вы можете получить схему для каждой таблицы отдельно и объединить ее, используя XDocument. Вот функция для получения схемы из запроса к базе данных:

XDocument GrabSchema(
   string dataSetName,
   string sql)
{
   var con = new SqlConnection("<<YourConnectionString>>");
   var command = new SqlCommand(sql, con);
   var sqlAdapter = new SqlDataAdapter(command);
   var dataSet = new DataSet(dataSetName);
   sqlAdapter.FillSchema(dataSet, SchemaType.Mapped);
   var stream = new MemoryStream();
   dataSet.WriteXmlSchema(stream);
   stream.Seek(0, System.IO.SeekOrigin.Begin);
   return XDocument.Load(XmlReader.Create(stream));
}

Затем вы объединяете две схемы таблиц, например:

var firstSchema = GrabDataset("t1", "select a = 49");
var secondSchema = GrabDataset("t2", "select b = '50'");
firstSchema.Root.Add(secondSchema.Root.Elements());

Вы можете проверить, имеет ли смысл объединенная схема, загрузив ее в другой набор данных:

DataSet dataSet = new DataSet();
dataSet.ReadXmlSchema(firstSchema.CreateReader());
...