2012-03-16 103 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/">