如何使用多个表从SQL表创建XML / XSD

如何使用多个表从SQL表创建XML / XSD

我想要做的是从数据库(或数据库模式)创建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中的一个大blob中

我想要的是XML中定义的每个表与它的内容分开。 某物

您可以单独获取每个表的模式,并使用XDocument将其组合。 这是从数据库查询中获取模式的函数:

 XDocument GrabSchema( string dataSetName, string sql) { var con = new SqlConnection("<>"); 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来validation组合模式是否有意义:

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