【问题标题】:Create XSD and XML document from dataset where xml references xsd Import xml to excel从 xml 引用 xsd 的数据集创建 XSD 和 XML 文档 将 xml 导入到 excel
【发布时间】:2012-03-16 12:03:35
【问题描述】:

标题很长,但希望我能解释一下我所追求的。我已经阅读并搜索了大量的 xml 文档,但还没有完全得到我想要做什么的答案。我正在尝试创建一个 XSD 文档,为数据集中的字段生成显式类型定义。然后,我尝试创建一个针对 XSD 文档进行验证的示例 XML 文档。

这在 Visual Studio 中工作得很好,因为我可以读取架构和文档并验证但是,创建的 xml 文档没有通过 xlmns 或其他方法真正引用 XSD。如果我想在 MS Excel 中使用这个 xml 数据并且我尝试导入它不知道 XSD 将在哪里进行验证,因此它会根据值假设它。如果需要解决这个问题,我的代码中有没有办法将 xlmns 添加到 XSD 和 XML 中?

 Dim MyDataSet As New DataSet("Samples")

    Dim MyDataTable As New DataTable("Sample")

    MyDataSet.Tables.Add(MyDataTable)

    MyDataTable.Columns.Add(New DataColumn("blnExample", GetType(Boolean), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("datExample", GetType(DateTime), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("decExample", GetType(Decimal), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("dblExample", GetType(Double), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("intExample", GetType(Integer), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("lngExample", GetType(Long), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("sglExample", GetType(Single), Nothing, MappingType.Element))
    MyDataTable.Columns.Add(New DataColumn("strExample", GetType(String), Nothing, MappingType.Element))

    ' Write out the XSD

    MyDataSet.WriteXmlSchema(Server.MapPath("~\xml\MySchema.xsd"))

    ' Put some data in the table
    Dim TempRow As DataRow

    For i As Integer = 1 To 3

        TempRow = MyDataTable.NewRow()
        TempRow("blnExample") = True
        TempRow("datExample") = New DateTime(2012, 2, 29)
        TempRow("decExample") = 1
        TempRow("dblExample") = 2
        TempRow("intExample") = 3
        TempRow("lngExample") = 4
        TempRow("strExample") = "Example"
        MyDataTable.Rows.Add(TempRow)
    Next
    ' Write out the data        

    MyDataSet.WriteXml(Server.MapPath("~\xml\MyData.xml"))

【问题讨论】:

    标签: xml vb.net xsd xml-namespaces


    【解决方案1】:

    您可以通过在DataSetinstance 上设置Namespace 属性来为两个文档添加命名空间:

    MyDataSet.Namespace = "http://www.example.com/"
    

    这将导致您的架构具有目标命名空间:

    <xs:schema targetNamespace="http://www.example.com/" ... >
    

    以及引用该命名空间的实例文档:

    <Sample xmlns="http://www.example.com/">
    

    【讨论】:

      猜你喜欢
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 2014-06-17
      • 2010-10-22
      • 1970-01-01
      相关资源
      最近更新 更多