【发布时间】:2015-03-24 08:42:16
【问题描述】:
我有一个以下格式的 XML。将数据填充到 Dataset 的最佳方法是什么?
<VariableTable>
<InternalName Old="sujith" New="sujitha" />
<InternalName Old="renjith" New="renjitha" />
</VariableTable>
【问题讨论】:
我有一个以下格式的 XML。将数据填充到 Dataset 的最佳方法是什么?
<VariableTable>
<InternalName Old="sujith" New="sujitha" />
<InternalName Old="renjith" New="renjitha" />
</VariableTable>
【问题讨论】:
Dataset.ReadXML() 方法,你可以使用它,也检查这个链接Reading xml in Dataset
有很多选择。
string xmlFilename = "XmlFilePath.xml"; DataSet yourDataset = new DataSet(); yourDataset.ReadXml(xmlFilename); // do with your filled Dataset
【讨论】:
如果您可以稍微更改 XML,那么 DataSets 提供内置功能来加载和保存数据到/从 xml。
然后你可以使用方法 写Xml() 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 中的方式...
如果您需要一些简单的东西,这可能会有点开销,但这是开箱即用的功能。
这是否让您知道如何做到这一点?
【讨论】:
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
【讨论】: