如何从具有多个表的SQL表创建XML / XSD
我想要做的是从数据库(或数据库架构)创建XML架构
这个post有一些有趣的代码
特别
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中定义的每个表,它的内容是分开的。
答案 0 :(得分:0)
您可以单独获取每个表的架构,并使用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 dataSet = new DataSet();
dataSet.ReadXmlSchema(firstSchema.CreateReader());