生成xml是,怎么生成的代码是对的,页面显示不对,右键查看源代码,存储为xml文件,就能正常显示,但是把生成的xml文件,直接response.write(xml.tostring()) 出来,就如图片显示,把所有的xml内容显示出来了,没有节点呢。 分析可能是以字符窜方式解析的,问不是xml。请高手赐教。一下是生成的源代码:
是用改了XmlDocument 和XmlTextWriter两种方法生成,输出结果都一样。我还试验了一下,保存一个文件,然后在读取文件,显示结果还是如图片,所以请高手赐教。
try
{
DataSetWebService GetService = new DataSetWebService();
Hashtable SqlCollection = new Hashtable();
SqlCollection.Add("ToAccess", "SELECT * from news where date between #" + DateTime.Now.AddMonths(-6).ToShortDateString() + "# and #" + DateTime.Now.ToShortDateString() + "#");
DictionaryEntry[] _DictEntry = new DictionaryEntry[SqlCollection.Count];
SqlCollection.CopyTo(_DictEntry, 0);
String _Context = ClsCommon.Serializer<DictionaryEntry[]>(_DictEntry);
DataSet ds = GetService.GetDataSet(_Context);
string linkStr = "";
string cssStr = "";
DataSet dt = GetService.GetDataTable("ToHKIE_APP_CMT", "select * from tbl_XmlSetup where DbName='ToAccess'");
if (dt != null && dt.Tables[0].Rows.Count > 0)
{
linkStr = dt.Tables[0].Rows[0]["Link"].ToString();
cssStr = dt.Tables[0].Rows[0]["CssContent"].ToString();
}
//方法一,用XmlDocument生成
XmlDocument xmlDoc = new XmlDocument();
XmlDeclaration declarNode = xmlDoc.CreateXmlDeclaration("1.0", Encoding.Default.ToString(), "yes");
xmlDoc.AppendChild(declarNode);
XmlComment xmlCom = xmlDoc.CreateComment("Copyright Innoways.com ");
xmlDoc.AppendChild(xmlCom);
XmlNode rootNode = xmlDoc.CreateElement("NEWES");
if (ds != null)
{
for (int i = 0; i < ds.Tables.Count; i++)
{
foreach (DataRow row in ds.Tables[i].Rows)
{
XmlNode newNode = xmlDoc.CreateElement("NEWS");
XmlNode newIDNode = xmlDoc.CreateElement("NEWS_ID");
newIDNode.InnerText = row["serialno"].ToString();
newNode.AppendChild(newIDNode);
XmlNode dateNode = xmlDoc.CreateElement("DATE");
dateNode.InnerText = ClsCommon.ConvertDateTimeToString(row["date"], "dd.MMM.yyyy");
newNode.AppendChild(dateNode);
XmlNode updateDateNode = xmlDoc.CreateElement("UPDATE_DATE");
updateDateNode.InnerText = ClsCommon.ConvertDateTimeToString(row["update"], "dd.MMM.yyyy");
newNode.AppendChild(updateDateNode);
XmlNode deadDateNode = xmlDoc.CreateElement("DEAD_DATE");
deadDateNode.InnerText = ClsCommon.ConvertDateTimeToString(row["deaddate"], "dd.MMM.yyyy");
newNode.AppendChild(deadDateNode);
XmlNode headLineNode = xmlDoc.CreateElement("HEADLINE");
XmlCDataSection headLineCdata = xmlDoc.CreateCDataSection(CommonMethods.AddHtmlCode(row["headline"].ToString(), linkStr, linkStr));
headLineNode.AppendChild(headLineCdata);
newNode.AppendChild(headLineNode);
XmlNode htmlNode = xmlDoc.CreateElement("HTML");
XmlCDataSection htmlCdata = xmlDoc.CreateCDataSection(CommonMethods.AddHtmlCode(cssStr, row["desc"].ToString(), linkStr, linkStr));
htmlNode.AppendChild(htmlCdata);
newNode.AppendChild(htmlNode);
XmlNode logoNode = xmlDoc.CreateElement("LOGO");
XmlCDataSection logoCdata = xmlDoc.CreateCDataSection("http://demo.i-wanna.com/hkie_apps_xml/material/testing_default_logo.jpg"); //对应的logo地址
logoNode.AppendChild(logoCdata);
newNode.AppendChild(logoNode);
XmlNode activeNode = xmlDoc.CreateElement("ACTIVE");
activeNode.InnerText = row["active"].ToString();
newNode.AppendChild(activeNode);
rootNode.AppendChild(newNode);
}
}
}
xmlDoc.AppendChild(rootNode);
MemoryStream stream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(stream, Encoding.Default);
writer.Formatting = Formatting.Indented;
xmlDoc.Save(writer);
StreamReader reader = new StreamReader(stream, Encoding.Default);
stream.Position = 0;
String content = reader.ReadToEnd();
reader.Close();
stream.Close();
Response.Write(content);
ds.Dispose();
dt.Dispose();
//方法二,用XmlTextWriter生成
//XmlTextWriter xmlWrite = new XmlTextWriter(Response.OutputStream, Encoding.Default);
//xmlWrite.WriteStartDocument();
//xmlWrite.Formatting = Formatting.Indented;
//xmlWrite.WriteComment("Copyright Innoways.com ");
//xmlWrite.WriteStartElement("NEWES");
//if (ds != null)
//{
// for (int i = 0; i < ds.Tables.Count; i++)
// {
// foreach (DataRow row in ds.Tables[i].Rows)
// {
// xmlWrite.WriteStartElement("NEWS");
// xmlWrite.WriteElementString("NEWS_ID", row["serialno"].ToString());
// xmlWrite.WriteElementString("DATE", ClsCommon.ConvertDateTimeToString(row["date"], "dd.MMM.yyyy"));
// xmlWrite.WriteElementString("UPDATE_DATE", ClsCommon.ConvertDateTimeToString(row["update"], "dd.MMM.yyyy"));
// xmlWrite.WriteElementString("DEAD_DATE", ClsCommon.ConvertDateTimeToString(row["deaddate"], "dd.MMM.yyyy"));
// xmlWrite.WriteRaw(@"<HEADLINE>" + CommonMethods.AddHtmlCode(cssStr, row["headline"].ToString(), linkStr, linkStr) + "</HEADLINE>");
// //xmlWrite.WriteRaw("<HTML>" + CommonMethods.AddHtmlCode(cssStr, row["desc"].ToString(), linkStr, linkStr) + "</HTML>");
// //xmlWrite.WriteRaw("<LOGO>" + CommonMethods.AddCDATA("http://demo.i-wanna.com/hkie_apps_xml/material/testing_default_logo.jpg") + "</LOGO>");
// //xmlWrite.WriteElementString("HEADLINE", CommonMethods.AddHtmlCode(cssStr, row["headline"].ToString(), linkStr, linkStr));
// //xmlWrite.WriteElementString("HTML", CommonMethods.AddHtmlCode(cssStr, row["desc"].ToString(), linkStr, linkStr));
// //xmlWrite.WriteElementString("LOGO", CommonMethods.AddCDATA("http://demo.i-wanna.com/hkie_apps_xml/material/testing_default_logo.jpg")); //暂无此字段,等客户加上
// xmlWrite.WriteElementString("ACTIVE", row["active"].ToString());
// xmlWrite.WriteEndElement();
// }
// }
//}
//xmlWrite.WriteEndElement();
//xmlWrite.WriteEndDocument();
//xmlWrite.Flush();
//xmlWrite.Close();
//doc.Load("new.xml");
//Response.Write(doc.);
// File.Delete("new.xml");
//Stream sm = xmlWrite.BaseStream;
//XmlDocument doc = new XmlDocument();
//doc.Load(sm);
//string s = doc.InnerText;
//ds.Dispose();
//dt.Dispose();
}
catch (Exception ex)
{
}
设置一下Response.ContentType吧
大哥啊,你是我的亲人,我改来改去,改了一天,就是没想到输出类型设置为xml的,改了一下果然好了。但是你们两位都回答对了,我该给谁分你,你回答的早,给你了,谢谢哈。
恩是,设置一下Response.ContentType
非常谢谢你,真心的感谢你的回答,谢谢,但是楼上回答的早,只能给他了,谢谢你,好人总有好报~!
@blue_sky_alf: 没事,可以加关注,有问题随时交流嘛是不