【问题标题】:How to create XML/XSD from SQL table with multiple tables如何从具有多个表的 SQL 表创建 XML/XSD
【发布时间】:2009-10-29 02:57:30
【问题描述】:

如何从具有多个表的 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 中的一个大块中

我想要的是在 XML 中定义的每个表都分别包含其内容。 某事

【问题讨论】:

    标签: c# sql xml schema xsd


    【解决方案1】:

    您可以分别获取每个表的架构,并使用 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());
    

    【讨论】:

    • 我认为这很有帮助,但我如何写回物理文件?在 readXMLSchema 上,我得到一个“字段节点内的无效 XPath 选择.....” DataSet _completeDataSet = new DataSet(); _completeDataSet.ReadXmlSchema(vehicleSchema.CreateReader()); _completeDataSet.WriteXmlSchema("FleetsDatabaseSchema.xsd");
    猜你喜欢
    • 2016-05-28
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多