将XML数据填充到数据集
问题描述:
我有以下格式的XML。将数据填充到数据集的最佳方式是什么?将XML数据填充到数据集
<VariableTable>
<InternalName Old="sujith" New="sujitha" />
<InternalName Old="renjith" New="renjitha" />
</VariableTable>
答
Dataset.ReadXML()方法,你可以使用它,并检查该链接Reading xml in Dataset
有很多选择。
- 给你的XML文件的路径,然后加载它使用的XmlTextReader为DataSet
- ,它传递到DataSet的ReadXml方法
string xmlFilename = "XmlFilePath.xml"; DataSet yourDataset = new DataSet(); yourDataset.ReadXml(xmlFilename); // do with your filled Dataset
答
如果你可以改变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 ...
,如果你需要一些简单,但是这是开箱即用的功能,这可能是一个有点开销。
这是否给你一个想法如何做到这一点?
答
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
我应该对xml进行哪些修改? – Maanu 2012-02-14 10:08:32
检查更新的帖子以查看您需要的xml格式。这包括XML模式。 – 2012-02-14 10:20:12