该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2004-03-24
<%@ page language="java" contentType="text/xml; charset=GB18030" pageEncoding="GB18030" %> <% response.setContentType("text/xml");; out.println("<tree>");; out.println("<tree text=\"Load &tree1.xml&\" src=\"tree1.xml\" />");; out.println("<tree text=\"Loaded Item 1\" action=\"http://webfx.eae.net\" />");; out.println("<tree text=\"Loaded Item 2\">");; out.println("<tree text=\"Loaded Item 2.1\" action=\"javascript:alert(2.1);\" />");; out.println("</tree>");; out.println("<tree text=\"Loaded Item 3 (with target);\" action=\"http://www.google.com\" target=\"_new\" />");; out.println("<tree text=\"Load &tree1.xml&\" src=\"tree1.xml\" />");; out.println("</tree>");; %> |
|
返回顶楼 | |
发表时间:2004-03-24
上面的写法有点笨,我没有改了。
大量的out.print可以省去的。 抬头的地方注意是text/xml不是text/html。 调用: 本地的xml: addItem('xml/tree1.xml'); 用jsp产生xml: addItem(,'http://jsp的url',); |
|
返回顶楼 | |
发表时间:2004-03-24
jaqwolf:
我在client是这样处理的,例子就是网站上的xmlextras.zip, try { switch (sOutFormat) { case "plainText": document.getElementById("out").innerHTML = stripHtml(xmlHttp.responseText); break; case "xmlText": document.getElementById("out").innerHTML = stripHtml(xmlHttp.responseXML.xml); break; case "xmlTree": document.getElementById("out").innerHTML = createXmlTree(xmlHttp.responseXML, 0); break; } } catch (exc) { document.getElementById("out").innerHTML = "An error occured <br/>" + "Message: " + exc.message + "<br/>" + "File: " + exc.fileName + "<br/>" + "Line: " + exc.lineNumber + "<br/>" + "Name: " + exc.name; } 但是使用(xmlHttp.responseXML.xml);和(xmlHttp.responseXML, 0); 方式都不能正确显示,使用(xmlHttp.responseText);方式可以。 不知道client调用需要改动什么? |
|
返回顶楼 | |
发表时间:2004-03-24
目前,实现的形式是:
服务器端生成XML文件,客户端可以解析XML文件。 比如网站上的xmlextras.zip中demo.html中, <option "url">http://webfx.eae.net/dhtml/xmlextras/tree.xml</option> 但是,这些文件放在服务器端是需要维护,比如定期删除。这样比较复杂, 能否通过形成xml dom的形式。既是: 服务器端不是生成XML文件,而是通过jsp通过out.println的形式输出xml 客户端读取服务器发送过来的XML,然后解析,形成所要的数据结构。 请问能否给出一个完整、简单的例子实现这个流程。 谢谢! |
|
返回顶楼 | |
发表时间:2004-03-25
引用 服务器端不是生成XML文件,而是通过jsp通过out.println的形式输出xml
客户端读取服务器发送过来的XML,然后解析,形成所要的数据结构。 我上面给出的代码正是这样做的。 所谓的动态产生xml传到客户端,--》就是服务端打印xml。 完整的例子除开那个打印的jsp文件,就还有一个html如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>XLoadTree Demo</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="js/xtree.js"></script> <script type="text/javascript" src="js/xmlextras.js"></script> <script type="text/javascript" src="js/xloadtree.js"></script> <link type="text/css" rel="stylesheet" href="css/xtree.css" /> <style type="text/css"> body { background: white; color: black; } </style> </head> <body> <script type="text/javascript"> /// XP Look webFXTreeConfig.rootIcon = "images/xp/folder.png"; webFXTreeConfig.openRootIcon = "images/xp/openfolder.png"; webFXTreeConfig.folderIcon = "images/xp/folder.png"; webFXTreeConfig.openFolderIcon = "images/xp/openfolder.png"; webFXTreeConfig.fileIcon = "images/xp/file.png"; webFXTreeConfig.lMinusIcon = "images/xp/Lminus.png"; webFXTreeConfig.lPlusIcon = "images/xp/Lplus.png"; webFXTreeConfig.tMinusIcon = "images/xp/Tminus.png"; webFXTreeConfig.tPlusIcon = "images/xp/Tplus.png"; webFXTreeConfig.iIcon = "images/xp/I.png"; webFXTreeConfig.lIcon = "images/xp/L.png"; webFXTreeConfig.tIcon = "images/xp/T.png"; var tree = new WebFXTree("Thread");; tree.add(new WebFXTreeItem("Tree Item (No Sub Item);"););; tree.add(new WebFXLoadTreeItem("Tree Item 1", "/jaqforums/posts.jsp"););; tree.add(new WebFXLoadTreeItem("Tree Item 2", "tree.xml"););; document.write(tree);; </script> </body> </html> |
|
返回顶楼 | |
发表时间:2004-03-27
在服务器端输出xml最好不要用字符串连接的方式,那样的话有些特殊字符会有问题的,还是用dom或者jdom来生成比较好
|
|
返回顶楼 | |
发表时间:2004-03-27
jaqwolf 写道 用途都比较类似。不过是后者并非ms一家支持。听起来能适应更多的浏览器。你有否考虑过使用xmlrpc?
xml-rpc 我没有用过,没多少经验。据我所知 guty 是这里用的最多的。 XMLHTTP Mozilla 已经支持的很好了,而且和 IE 是兼容的(XMLHTTP 最早就是 IE 独有的技术)。我们只计划支持 IE 和 Mozilla 两大浏览器。 llandyl 写道 如何使用jsp写服务器端生成XML文件?最好有个简单的例子。
我们已经不写 JSP 了。输出 XML 最好的方式是使用 Servlet 而不是 JSP,把 Content-type 设置为 text/xml 就可以了,另外注意在 XML 头信息中把字符集设对(一般 GBK 就足够了)。 |
|
返回顶楼 | |
发表时间:2004-03-27
请问dlee:
你们client一般是如何处理的?能否给出简单的例子? 谢谢! |
|
返回顶楼 | |
发表时间:2004-03-27
我最近比较忙,没时间写这样的例子。建议你去熟读 MSDN 中有关 XMLHTTP 的内容,然后使用 Google 到网上去搜索。
|
|
返回顶楼 | |
发表时间:2004-03-28
是时间考虑采用下一代的B/S模式了, 在目前的流行的架构中, browser的能力太弱.
dlee他们采用的XMLHTTP是是对传统BS模式颠覆的一次尝试, 但是还不够彻底. 而且我不认为其他人可以很快上手, 在这上面需要花上相当长的时间找一条最佳实践的路. 如果你需要Rich Content应用, 那么Macromedia的Flex, M$的avalon, Mozilla的XUL这些下一代的B/S技术更值得关注. |
|
返回顶楼 | |