2012-02-14 164 views
2

我有以下格式的XML。将数据填充到数据集的最佳方式是什么?将XML数据填充到数据集

<VariableTable> 
    <InternalName Old="sujith" New="sujitha" /> 
    <InternalName Old="renjith" New="renjitha" /> 
</VariableTable> 

回答

4

Dataset.ReadXML()方法,你可以使用它,并检查该链接Reading xml in Dataset

有很多选择。

  1. 给你的XML文件的路径,然后加载它使用的XmlTextReader为DataSet
  2. ,它传递到DataSet的ReadXml方法
string xmlFilename = "XmlFilePath.xml"; 
     DataSet yourDataset = new DataSet(); 
     yourDataset.ReadXml(xmlFilename); 
     // do with your filled Dataset 
0

如果你可以改变XML一个一点点,然后DataSets提供内置的功能来加载和保存数据到/从XML。

然后,您可以使用方法 中WriteXML() 的ReadXml()

如果需要加载自定义XML文件格式,那么你就需要编写代码来分析它,并填充数据集。为此你可以使用Linq或XPath。

希望有所帮助。

修订

var dataSet = new DataSet("TestDataSet"); 
    var dataTable = new DataTable("TestTable"); 

    dataTable.Columns.Add("ID", typeof(Int32)); 
    dataTable.Columns.Add("Value", typeof(string)); 

    dataTable.Rows.Add(1, "Value1"); 
    dataSet.Tables.Add(dataTable); 

    dataSet.WriteXml(@"L:\ds.xml", XmlWriteMode.WriteSchema); 

上面的代码是我与WriteToXml方法中使用。 不是这是输出XML格式。

<?xml version="1.0" standalone="yes"?> 
<TestDataSet> 
    <xs:schema id="TestDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> 
    <xs:element name="TestDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"> 
     <xs:complexType> 
     <xs:choice minOccurs="0" maxOccurs="unbounded"> 
      <xs:element name="TestTable"> 
      <xs:complexType> 
       <xs:sequence> 
       <xs:element name="ID" type="xs:int" minOccurs="0" /> 
       <xs:element name="Value" type="xs:string" minOccurs="0" /> 
       </xs:sequence> 
      </xs:complexType> 
      </xs:element> 
     </xs:choice> 
     </xs:complexType> 
    </xs:element> 
    </xs:schema> 
    <TestTable> 
    <ID>1</ID> 
    <Value>Value1</Value> 
    </TestTable> 
</TestDataSet> 

这是该数据将如何存储在XML ...

,如果你需要一些简单,但是这是开箱即用的功能,这可能是一个有点开销。

这是否给你一个想法如何做到这一点?

+0

我应该对xml进行哪些修改? – Maanu 2012-02-14 10:08:32

+0

检查更新的帖子以查看您需要的xml格式。这包括XML模式。 – 2012-02-14 10:20:12

-1
Public Function FillDataSetFromXML(ByVal Procedure As String, ByVal param As List(Of SqlParameter)) As DataSet 
    Dim dbcon As New dbConnection() 
    Dim cmd As New SqlCommand() 
    Dim ds As New DataSet() 
    Dim XR As XmlReader 
    XR = Nothing 
    Try 
     cmd.CommandType = CommandType.StoredProcedure 
     cmd.CommandText = Procedure 
     dbcon.OpenConnection() 
     cmd.Connection = dbcon.GetDbConnection() 
     If param.Count > 0 Then 
      For Each p As SqlParameter In param 
       cmd.Parameters.AddWithValue(p.ParameterName, p.Value) 
      Next 
     End If 
     XR = cmd.ExecuteXmlReader() 
     ds.ReadXml(XR) 
     Return ds 
    Catch ex As Exception 
     Return ds 
    Finally 
     dbcon.CloseConnection() 
    End Try 

End Function 

Public Function ExecuteScalar(ByVal Qry As String) 
    Dim dbcon As New dbConnection 
    Dim cmd As New SqlCommand 
    Dim res As String 
    Try 
     cmd.CommandType = CommandType.Text 
     cmd.CommandText = Qry 
     dbcon.OpenConnection() 
     cmd.Connection = dbcon.GetDbConnection() 
     res = cmd.ExecuteScalar().ToString() 
     Return res 

    Catch ex As Exception 
     Return res 
    Finally 
     dbcon.CloseConnection() 
    End Try  
End Function 

Public Function ExecuteProdedures(ByVal param As List(Of SqlParameter), ByVal Procedure As String) As DataSet 

    Dim dbcon As New dbConnection 
    Dim ds As New DataSet() 

    Try 
     Dim cmd As New SqlCommand() 
     cmd.CommandType = CommandType.StoredProcedure 
     cmd.CommandText = Procedure 
     dbcon.OpenConnection() 
     cmd.Connection = dbcon.GetDbConnection() 
     If param.Count > 0 Then 
      For Each p As SqlParameter In param 
       'cmd.Parameters.AddWithValue(p.ParameterName, p.Value) 
       cmd.Parameters.Add(p) 
      Next 
     End If 
     Dim XR As XmlReader 
     XR = cmd.ExecuteXmlReader() 
     ds.ReadXml(XR) 
     Return ds 
    Catch ex As Exception 
    Finally 
     dbcon.CloseConnection() 
    End Try 
End Function 
+0

没有解释的巨大代码墙很少是非常好或有用的答案。尤其是对已经接受答案的3岁的问题。 – Bryan 2015-03-24 00:43:22