用asp读取xml时清除缓存的问题与解决办法
前段时间给客户做了几个网页,客户要求在自己的网站中显示自己在新浪博客里的文章,作为网站的一部分。这样的情况可以解决,主要可以通过博客中的 XML来实现,通过用asp来读取博客中XML,将博客中的标题、发布时间等信息显示在网站中。但是在使用的过程中,出现了一个问题:当博客中添加文章后,在网页中读取博客中的XML后进行更新,但是却没有及时更新,查询了很多信息,发现是网站没有及时更新XML数据而造成的。如何解决?先是尝试清除网站的缓存,设置网站中的HTTP头:Cache-Control和值:no-cache。设置后进行测试,发现效果不好,主要问题是这样的设置只是清除了网站内所包含的图片,文本等缓存,没有更新XML缓存,所以没有解决前面的问题。
无奈只能再查找,所幸在CSDN中看到一篇文章,介绍清除缓存的好办法是改变思路,不是清除内容,而是强行加载要更新的内容。主要思路是在打开的路径中添加随机数,因为在iis中访问不同的路径时,内容是强行加载的,没有调用缓存。有了这个思路,改动程序就比较方便了。具体代码如下:
<%
dim xmlDoc
dim http
dim bitem
dim bi
dim title
dim link
dim pubdate
dim days
dim months
dim NM
dim xmlseed
dim conn,strconn,rs
dim ReadSinaRss
Randomize '增加随机数初始化语句
'原本的赋值语句为:xmlseed="http://blog.sina.com.cn/rss /adsbaby.xml",修改后为:
xmlseed="http://blog.sina.com.cn/rss/adsbaby.xml?tmp="&int(rnd*1000)
’注意:在URL地址中,最后增加”?xxx=number“这种形式对浏览内容不会影响,是让浏览地址内容重新加载的一种比较好的办法
Set http=Server.CreateObject("Microsoft.XMLHTTP")
http.Open "GET",xmlseed,False
http.send
Set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.Async=False
xmlDoc.ValidateOnParse=False
xmlDoc.Load(http.ResponseXML)
Set bitem=xmlDoc.getElementsByTagName("item")
if bitem.Length>=0 then
ReadSinaRss="<table width=100% cellpadding=0 cellspacing=0>"
For bi=0 To (bitem.Length-1)
if bi<=5 then
Set pubdate=bitem.Item(bi).getElementsByTagName("pubDate")
Set title=bitem.Item
相关文档:
MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot ;
// 创建DOMDocument对象
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if ( ! SUCCEEDED(hr))
{
MessageBox( " 无法创建DOMDocument对象,请检查 ......
调试时发现日志报如下错误 org.xml.sax.SAXParseException
发现是xml对特殊符号要做处理,几个特殊符号如下:
< < 小于号
> > 大于号
& & 和
' ' 单引号
" " 双引号
在xml中把特殊符号用上述转下即好了 ......
序列化是将对象转换成易于传输的形式的过程。例如,可以序列化对象,并使用 HTTP 通过 Internet 在客户端和服务器之间进行传输。另一方面,反序列化在流中重新构建对象。
XML 序列化只将对象的公共字段和属性值序列化为 XML 流。XML 序列化不包括类型信息。例如,如果 Library 命名空间中存在 Book 对象,则不能保证将它反 ......
XML 序列化可以采用从简单到复杂的多种形式。例如,可以序列化只包含公共字段和公共属性的类,如 XML 序列化简介中所示。下面的代码示例讨论各种高级方案,包括如何使用 XML 序列化生成符合特定 XML 架构 (XSD) 文档的 XML 流。
序列化数据集
除了序列化公共类的实例外,还可序列化 DataSet 的实例,如下面的代码示例所示 ......
http://topic.csdn.net/u/20080905/10/caea1689-4582-417a-8723-d008a3ae1a10.html?550638422
tringBuilder sb = new StringBuilder();
sb.Append(" <?xml version=\"1.0\"?> ");
......