{
XmlDocument xmlDoc = new XmlDocument();
//XML文件的说明
XmlDeclaration xmlDec = xmlDoc.CreateXmlDeclaration("1.0", Encoding.UTF8.BodyName, "yes");
xmlDoc.AppendChild(xmlDec);//添加说明
//添加元素
//如果rss有样式表文件的话,加上这两句
// XmlProcessingInstruction xmlCss = xmlDoc.CreateProcessingInstruction("xml-stylesheet", "type=\"text/css\" href=\"Rss.css\"");
// xmlDoc.AppendChild(xmlCss);
XmlElement root = xmlDoc.CreateElement("rss");
root.SetAttribute("version", "2.0");
xmlDoc.AppendChild(root);
//添加频道
XmlElement chNode = xmlDoc.CreateElement("channel");
root.AppendChild(chNode);
//添加频道内容
XmlElement element = xmlDoc.CreateElement("title");
XmlNode textNode = xmlDoc.CreateTextNode("这是大标题");
element.AppendChild(textNode);
chNode.AppendChild(element);
element = xmlDoc.CreateElement("link");
textNode = xmlDoc.CreateTextNode("http://www.gkcity.com");
element.AppendChild(textNode);
chNode.AppendChild(element);
element = xmlDoc.CreateElement("language");
textNode = xmlDoc.CreateTextNode("zh-cn");
element.AppendChild(textNode);
chNode.AppendChild(element);
element = xmlDoc.CreateElement("description");
XmlNode node = xmlDoc.CreateCDataSection("这里是工控网的一些最新的相关信息?");
element.AppendChild(node);
chNode.AppendChild(element);
//从数据库中读取数据到RSS中去
News[] rssItems = GetData();
foreach (News var in rssItems)
{
element = xmlDoc.CreateElement("item");
XmlElement itemElement = xmlDoc.CreateElement("Title");
XmlNode itemNode = xmlDoc.CreateTextNode(var.Title);
itemElement.AppendChild(itemNode);
element.AppendChild(itemElement);
//
itemElement = xmlDoc.CreateElement("Link");
itemNode = xmlDoc.CreateTextNode(var.Link);
itemElement.AppendChild(itemNode);
element.AppendChild(itemElement);
//
itemElement = xmlDoc.CreateElement("PubDate");
itemNode = xmlDoc.CreateTextNode(var.PubDate.ToString());
itemElement.AppendChild(itemNode);
element.AppendChild(itemElement);
//
itemElement = xmlDoc.CreateElement("Description");
itemNode = xmlDoc.CreateTextNode(var.Description);
itemElement.AppendChild(itemNode);
element.AppendChild(itemElement);
chNode.AppendChild(element);
}
Response.ContentType = "application/xml";
Response.Write(xmlDoc.InnerXml);
//也可以用下面的来生成RSS文件。
//XmlTextWriter textWrite = new XmlTextWriter(this.Response.OutputStream, Encoding.UTF8);
//xmlDoc.WriteTo(textWrite);
//textWrite.Flush();
//textWrite.Close();
}
输出结果如下(item部分是为说明实例手工添加):
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0">
<channel>
<title>搜狐焦点新闻</title>
<link>http://www.sohu.com</link>
<description>
<![CDATA[即时报道国内外时政大事,解读环球焦点事件
]]>
</description>
<item id="">
<title></title>
<link></link>
<pubDate>2006-10-15 21:59:36</pubDate>
</item>
<item id="">
<title></title>
<link></link>
<pubDate>2006-10-15 10:33:53</pubDate>
</item>
<title>[中介][出售住宅]明发国际新城3房2厅2卫93万元/套</title>
<link>http://www.ewhouse.com/HouseInfo.aspx?publishId=3440</link>
<pubDate>2006-10-12 10:50:18</pubDate>
</item>
</channel>
</rss>
有几点值得说明的有:
1、 CreateTextNode,即创建文本结点
有人习惯使用InnerText来添加结点中的文本,虽然结果是一样的,但是要知道在DOM中文本也是结点,既然要符合DOM标准,就要进行到底!
2、 输出
我在实例中使用XmlTextWriter输出。
实际还可以使用如下:
Response.ContentType = "application/xml"; // 输出并按xml数据显示
Response.Write(domDoc.InnerXml);
但是,使用XmlTextWriter输出更快,所以也建议使用这个方法。
本文详细介绍了一个简单的RSS文件生成过程,包括使用C#语言创建XML文档、添加必要的元素和属性,以及如何从数据库读取数据填充RSS项。文章还强调了正确的DOM节点创建方式和输出方法。
--RSS制作&spm=1001.2101.3001.5002&articleId=101799160&d=1&t=3&u=e9bc7788d7fa48129d128726079b7312)
196

被折叠的 条评论
为什么被折叠?



