2013-05-12 80 views
0

我只是试图加载数据集并将其作为XML输出到网页中,同时还要写入模式。我一直在研究找到一种方法来实现这一点,没有任何运气。ASP 4.0,C#将数据集写入XML数据

我使用的代码是:

string str = 
    "SELECT Name,Members,MaxLvl,Faction,Government,Score FROM dim5orgs where faction = 
    'Omni' order by Score DESC"; 

// Connection string for a typical local MySQL installation 
string cnnString = "Server=xxxxxxxnet;Port=3306;Database=xxx;Uid=xxxxx;Pwd=xxxx"; 

// Create a connection object and data adapter 
MySqlConnection cnx = new MySqlConnection(cnnString); 
MySqlDataAdapter adapter = new MySqlDataAdapter(); 

// Create a SQL command object 
string cmdText = str; 

MySqlCommand cmd = new MySqlCommand(cmdText, cnx); 

// Create a fill a Dataset 
DataSet ds = new DataSet(); 
adapter.SelectCommand = cmd; 
adapter.Fill(ds); 

StringWriter sw = new StringWriter(); 
ds.WriteXml(sw,XmlWriteMode.WriteSchema); 
string result = sw.ToString(); 

Response.Write(result); 

现在我得到的输出,如:

Punk732220OmniRepublic1644786805740 

Paradise754220OmniDepartment1633903815782 

我想输出是正确的XML形式以某种方式使用的列名数据集。

像:

<data> 
    <name>Punk</name> 
    <members>732</members> 
    <Maxlvl>220</MaxLvl>...etc 
</data> 

我想在适当的XML形式,书面正确的XML头。

谢谢。

+0

迈克尔,下面的答案中的任何一个回答你的问题 - 如果其中之一,你能把它标记为接受吗? – 2014-02-12 16:07:16

回答

0

当你说“我得到的输出像”,这是否意味着你看到,在你的网页,或者这是什么“结果”包含在调试程序时?

如果是前者,你可能丢失设置响应类型:

Response.ContentType = "text/xml"; 

以及可选的编码:

Response.ContentEncoding = System.Text.Encoding.UTF8; 

你写你的响应之前。

编辑:此外,请确保您没有返回任何HTML从您的页面模板或母版页(假设您使用.aspx文件)。您可以通过在浏览器中查看页面源代码来进行检查(右键单击并在IE中查看源代码)。道歉,如果这教你吸鸡蛋,从你的问题我不知道你是否已经检查过这些事情。

编辑2:我已经测试了您的代码,并且如果您将响应ContentType设置为text/xml,它适用于我。

0

查看XmlSerializer Class的文档。我认为你可以使用这样的事情:

StreamWriter streamWriter = new StreamWriter(fileLocation); 

XmlSerializer xml = new System.Xml.Serialization.XmlSerializer(ds.GetType()); 
xml.Serialize(streamWriter, ds); 

streamWriter.Close(); 

我还没有尝试过使用DataSets,所以我不确定。