发发牢骚,关于ASP.NET读取XML新闻的问题
2024-07-10 12:56:53
供稿:网友
单位需要更新一下以前的新闻系统,需要与现代社会接轨,因此开始研究了一下xml来存储新闻的方法。
找到了网上流传的一段很有名的读取xml文件作为新闻的方法,代码如下:
<%@ import namespace="system"%>
<%@ page language="c#" debug="true" codepage="936"%>
<%@ import namespace="system.io" %>
<%@ assembly name="system.xml" %>
<%@ import namespace="system.xml.xsl" %>
<html>
<head>
<title>
</title>
<script language="c#" runat="server">
public string xslt()
{
stringwriter writer = new stringwriter();
xmldocument xmldoc= new xmldocument();
xmldoc.load(server.mappath(request["name"] +".xml"));
xsltransform xsldoc = new xsltransform();
xsldoc.load(server.mappath("main.xsl"));
documentnavigator nav= new documentnavigator(xmldoc);
xsldoc.transform(nav,null,writer);
return writer.tostring();
}
</script>
</head>
<body>
<%=xslt()%>
<p align="center">该程序由<a href="http://www.aspcool.com">www.aspcool.com</a>设计制作.</p>
</body>
</html>
关键的地方就是:
documentnavigator nav= new documentnavigator(xmldoc);
这句话怎么都不能解释,郁闷了很久,找了最新的msdn lib结果找到一个2001年的msdn 杂志上面的一段话:
documentnavigator只能用于asp.net beta2,痛苦,找了老半天,这段所谓经典的代码竟然是过时的产品。
没有办法,只好从后一句想办法,找
xsldoc.transform(nav,null,writer);
总算找到了transform这个函数的用法,
public xmlreader transform(
xpathnavigator input,
xsltargumentlist args
);
然后就开始找xpathnavigator,不错,xmldocument自己就带了一个createnavigator()函数。
总算大功告成。
修改后的代码:
<%@ import namespace="system"%>
<%@ page language="c#" debug="true" codepage="936"%>
<%@ import namespace="system.io" %>
<%@ assembly name="system.xml" %>
<%@ import namespace="system.xml" %>
<%@ import namespace="system.xml.xsl" %>
<%@ import namespace="system.xml.xpath" %>
<html>
<head>
<title>
</title>
<script language="c#" runat="server">
public string xslt()
{
stringwriter writer = new stringwriter();
xmldocument xmldoc= new xmldocument();
xmldoc.load(server.mappath(request["name"] +".xml"));
xsltransform xsldoc = new xsltransform();
xsldoc.load(server.mappath("main.xsl"));
xpathnavigator nav = xmldoc.createnavigator();
xsldoc.transform(nav,null,writer);
return writer.tostring();
}
</script>
</head>
找了一个晚上的google都没有找到结果,还是要自己分析,希望这段代码可以在google上让以后的人找到,以方便日后学习asp.net的同好不用花费太多的时间来思考,可以尽快地找到答案。