2012-03-16 104 views
0

长标题,但希望我能解释我后面的内容。我已经阅读并搜索了大量的XML文档,但还没有得到一个答案,我试图做什么。我想创建一个XSD文档,为数据集中的字段生成显式的类型定义。然后,我尝试创建一个示例XML文档,该文档针对XSD文档进行验证。从数据集创建XSD和XML文档,其中xml引用xsd将xml导入到excel

这适用于Visual Studio,因为我可以在架构和文档中读取它并验证BUT,所创建的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")) 

回答

0

您可以通过设置您DataSet实例Namespace属性命名空间添加到这两个文件:

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

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

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

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

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