0

我只是试图加载一个数据集并将其作为 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 标头。

谢谢你。

4

2 回答 2

0

当您说“我得到类似的输出”时,这是否意味着您在网页中看到了它,或者这就是您调试程序时“结果”包含的内容?

如果是前者,您可能缺少设置响应类型:

Response.ContentType = "text/xml";

以及可选的编码:

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

在你写下你的回复之前。

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

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

于 2013-05-12T18:33:16.270 回答
0

查看XmlSerializer Class的文档。我认为您可以像这样使用它:

StreamWriter streamWriter = new StreamWriter(fileLocation);

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

streamWriter.Close();

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

于 2013-05-12T18:43:49.693 回答