Заполнение XML-данных в DataSet - PullRequest
2 голосов
/ 14 февраля 2012

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

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

Ответы [ 3 ]

4 голосов
/ 14 февраля 2012

Dataset.ReadXML () метод, вы можете использовать его, а также проверить наличие этих ссылок Чтение XML в наборе данных

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

  1. Укажите путь к файлу xml, затем загрузите его в набор данных
  2. , используя XmlTextReader, передайте его в метод readxml набора данных
string xmlFilename = "XmlFilePath.xml";
         DataSet yourDataset = new DataSet();
         yourDataset.ReadXml(xmlFilename);
         // do with your filled Dataset
0 голосов
/ 23 марта 2015
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 голосов
/ 14 февраля 2012

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

Это может быть немного сложным, если вам нужно что-то простое, ноэто функциональность из коробки.

Это дает вам представление, как это сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...