从数据集创建XSD和XML文档,其中xml引用xsd将xml导入excel

时间:2012-03-16 12:03:35

标签: xml vb.net xsd xml-namespaces

很长的头衔,但希望我可以解释我的追求。我已阅读并搜索了大量的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"))

1 个答案:

答案 0 :(得分:0)

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

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

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

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

和您的实例文档引用该命名空间:

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