2012-02-14 4 views
2

У меня есть XML следующего формата. Каков наилучший способ заполнения данных в Dataset?Заполнение данных XML DataSet

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

ответ

4

Dataset.ReadXML() метод, вы можете использовать его, а также проверить это ссылки Reading xml in Dataset

Есть много вариантов.

  1. Дайте свой путь XML-файл, а затем загрузить его набора данных
  2. с помощью XmlTextReader, передать его методу ReadXml Dataset
string xmlFilename = "XmlFilePath.xml"; 
     DataSet yourDataset = new DataSet(); 
     yourDataset.ReadXml(xmlFilename); 
     // do with your filled Dataset 
0

Если вы можете изменить XML A немного, то 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

+0

Проверьте обновленное сообщение, чтобы увидеть нужный вам XML-формат. Это включает в себя схему XML. –

-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

Смежные вопросы