将数据集转换为XML
我已经坚持这个问题几个小时了,似乎无法搞清楚,所以我在这里问:)
好吧,我有这个function:
private void XmlDump() { XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes")); XElement rootElement = new XElement("dump"); rootElement.Add(TableToX("Support")); string connectionString = ConfigurationManager.ConnectionStrings["MyDb"].ConnectionString; SqlConnection con = new SqlConnection(connectionString); string sql = "select * from support"; SqlDataAdapter da = new SqlDataAdapter(sql, con); DataSet ds = new DataSet("Test"); da.Fill(ds, "support"); // Convert dataset to XML here var docresult = // Converted XML Response.Write(docResult); Response.ContentType = "text/xml; charset=utf-8"; Response.AddHeader("Content-Disposition", "attachment; filename=test.xml"); Response.End(); }
我一直在尝试各种不同的东西,但我一直在收到错误,所以我离开了如何将DataSet转换为XML部分空白。
另外,此查询包含具有特殊字符的列。
您可以使用ds.WriteXml
,但这需要您有一个Stream
来输出输出。 如果您想要输出字符串,请尝试以下扩展方法:
public static class Extensions { public static string ToXml(this DataSet ds) { using (var memoryStream = new MemoryStream()) { using (TextWriter streamWriter = new StreamWriter(memoryStream)) { var xmlSerializer = new XmlSerializer(typeof(DataSet)); xmlSerializer.Serialize(streamWriter, ds); return Encoding.UTF8.GetString(memoryStream.ToArray()); } } } }
用法:
var xmlString = ds.ToXml(); // OR Response.Write(ds.ToXml());
只需使用Dataset.getXml()
:
doc.LoadXml(ds.GetXml());
写下面的代码部分
DataTable dt = new DataTable("MyData"); dt.WriteXml(@Application.StartupPath + "\DataBaseValues.xml");
或者,您也可以直接转换dataSet
如Oded所说,
private void WriteXmlToFile(DataSet thisDataSet) { if (thisDataSet == null) { return; } // Create a file name to write to. string filename = "myXmlDoc.xml"; // Create the FileStream to write with. System.IO.FileStream myFileStream = new System.IO.FileStream(filename, System.IO.FileMode.Create); // Create an XmlTextWriter with the fileStream. System.Xml.XmlTextWriter myXmlWriter = new System.Xml.XmlTextWriter(myFileStream, System.Text.Encoding.Unicode); // Write to the file with the WriteXml method. thisDataSet.WriteXml(myXmlWriter); myXmlWriter.Close(); }
使用DataSet.WriteXml
– 它将以XML格式输出数据集。
我们也可以使用它
私有函数DsToXML(DataSet ds)作为System.Xml.XmlDataDocument Dim xmlDoc As System.Xml.XmlDataDocument Dim xmlDec As System.Xml.XmlDeclaration Dim xmlWriter As System.Xml.XmlWriter xmlWriter = New XmlTextWriter(context.Response.OutputStream,System.Text.Encoding.UTF8) xmlDoc =新的System.Xml.XmlDataDocument(ds) xmlDoc.DataSet.EnforceConstraints = False xmlDec = xmlDoc.CreateXmlDeclaration(“1.0”,“UTF-8”,Nothing) xmlDoc.PrependChild(xmlDec) xmlDoc.WriteTo(XmlWriter的) 重新调整xmlDoc 结束点
如果ds是你的数据集..
您可以使用:
ds.getXml();
这有助于获取XML
试试这个。 它对我有用。
上述就是C#学习教程:将数据集转换为XML分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
static XmlDocument xdoc = new XmlDocument(); //static; since i had to access this file someother place too protected void CreateXmlFile(DataSet ds) { //ds contains sales details in this code; ie list of products along with quantity and unit //You may change attribute acc to your needs ; ie employee details in the below code string salemastid = lbl_salemastid.Text; int i = 0, j=0; String str = "salemastid:" + salemastid; DataTable dt = ds.Tables[0]; string xml = "" ; while (j < dt.Rows.Count) { int slno = j + 1; string sl = slno.ToString(); xml += "" + sl +" " + "" + dt.Rows[j][0].ToString() + " " + "" + dt.Rows[j][1].ToString() + " " + "" + dt.Rows[j][2].ToString() + " "; j++; } xml += " "; xdoc.LoadXml(xml); //Here the xml is prepared and loaded in xml DOM. xdoc.Save(Server.MapPath("Newsales.xml")); //You may also use some other names instead of 'Newsales.xml' //to get a downloadable file use the below code System.IO.MemoryStream stream = new System.IO.MemoryStream(); XmlTextWriter xwriter = new XmlTextWriter(stream, System.Text.Encoding.UTF8); xdoc.WriteTo(xwriter); xwriter.Flush(); Response.Clear(); Encoding.UTF8.GetString(stream.ToArray()); byte[] byteArray = stream.ToArray(); Response.AppendHeader("Content-Disposition", "filename=OrderRequest.xml"); Response.AppendHeader("Content-Length", byteArray.Length.ToString()); Response.ContentType = "application/octet-stream"; Response.BinaryWrite(byteArray); xwriter.Close(); stream.Close(); }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/998683.html