如何使用dom4j生成指定格式的XML并将结果显示在JSP页面上

zhangsc 2010-09-30 09:48:02
想使用dom4j创建如下格式的XML
<?xml version="1.0" encoding="UTF-8"?>
<table>
<row>
<name>
<![CDATA[Edward]]>
</name>
<sex>
<![CDATA[Male]]>
</sex>
<age>
<![CDATA[28]]>
</age>
</row>
</table>


使用如下代码生成了一个XML
<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ page import="org.dom4j.*" %>
<%@ page import="org.dom4j.io.*" %>
<%@ page import="java.io.*" %>
<%
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
Document document=DocumentHelper.createDocument();
Element _row=document.addElement("row");
_row.addAttribute("name","Edward");
_row.addAttribute("sex","Male");
_row.addAttribute("age","28");
PrintWriter p=response.getWriter();
try{
OutputFormat format1 = new OutputFormat(" ", true);
format1.setEncoding("UTF-8");
XMLWriter out1=new XMLWriter(p,format1);
out1.write(document);
out1.flush();
}
catch(IOException e){
e.printStackTrace();
}
%>


运行后发现格式不是我想要的那样
<?xml version="1.0" encoding="UTF-8"?>
<row name="Edward" sex="Male" age="28"/>

如何生成指定格式的XML?另外,我是使用Tomcat发布上面的JSP程序,我想将XML结果直接打印在这个JSP页面上,而不是显示在Tomcat的控制台上,使用PrintWriter没有实现将XML结果直接打印在这个JSP页面上,有什么办法吗?最好能给出具体的实现代码,谢谢!
...全文
184 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kebin0001 2010-09-30
  • 打赏
  • 举报
回复
完整的JSP頁面

<%@ page language="java" contentType="text/html;charset=UTF-8"%>
<%@ page import="org.dom4j.*" %>
<%@ page import="org.dom4j.io.*" %>
<%@ page import="java.io.*" %>
<html>
<head>
<title>Test XML</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
</head>
<body>
<%
String resultStr = null;
Document document=DocumentHelper.createDocument();
Element _row=document.addElement("row");
Element _name=_row.addElement("name");
Element _sex=_row.addElement("sex");
Element _age=_row.addElement("age");
_name.addCDATA("Edward");
_sex.addCDATA("Male");
_age.addCDATA("28");
try{
OutputFormat format1 = new OutputFormat(" ", true);
format1.setEncoding("UTF-8");
StringWriter sw = new StringWriter();
XMLWriter out1=new XMLWriter(sw,format1);
out1.write(document);
out1.close();
resultStr=sw.toString();
resultStr = resultStr.replaceAll("<","<");
resultStr = resultStr.replaceAll(">",">");
}
catch(IOException e){
e.printStackTrace();
}
%>
<pre>
<%=resultStr%>
</pre>
</body>
</html>
zhangsc 2010-09-30
  • 打赏
  • 举报
回复
如何才能将结果显示在JSP页面上呢,一输出直接输出到Tomcat的控制台上了
apchy 2010-09-30
  • 打赏
  • 举报
回复
Document document=DocumentHelper.createDocument();
Element _root=document.addElement("table");
Element _row=_root.addElement("row");
Element _name=_row.addElement("name");
Element _sex=_row.addElement("sex");
Element _age=_row.addElement("age");
_name.addCDATA("Edward");
_sex.addCDATA("Male");
_age.addCDATA("28");
dr_lou 2010-09-30
  • 打赏
  • 举报
回复
< > 转义应该是必需的吧

< >
zhangsc 2010-09-30
  • 打赏
  • 举报
回复
XML的格式已经解决了,如何才能将XML的结果输出在JSP页面上?
zhangsc 2010-09-30
  • 打赏
  • 举报
回复
修改了一下代码
Document document=DocumentHelper.createDocument();
Element _root=document.addElement("table");
Element _row=_root.addElement("row");
Element _name=_row.addElement("name");
Element _sex=_row.addElement("sex");
Element _age=_row.addElement("age");
_name.addText("Edward");
_sex.addText("Male");
_age.addText("28");
try{
OutputFormat format1 = new OutputFormat(" ", true);
format1.setEncoding("UTF-8");
XMLWriter out1=new XMLWriter(new PrintWriter(System.out),format1);
out1.write(document);
out1.flush();
}
catch(IOException e){
e.printStackTrace();
}


生成结果如下所示
<?xml version="1.0" encoding="UTF-8"?>

<table>
<row>
<name>Edward</name>
<sex>Male</sex>
<age>28</age>
</row>
</table>


和我想要的还有一点不一样的地方,因为没有生成CDATA[Edward],这个如何修改?
<?xml version="1.0" encoding="UTF-8"?>
<table>
<row>
<name>
<![CDATA[Edward]]>
</name>
<sex>
<![CDATA[Male]]>
</sex>
<age>
<![CDATA[28]]>
</age>
</row>
</table>


另外,XML直接显示在Tomcat的控制台上,没有显示在JSP上,这个如何能实现呢?
zhangsc 2010-09-30
  • 打赏
  • 举报
回复
能给出具体代码吗?
youjianbo_han_87 2010-09-30
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jiewo 的回复:]

你代码有问题·
_row.addAttribute("name","Edward");
_row.addAttribute("sex","Male");
_row.addAttribute("age","28");

应该对应增加三个子节点!
[/Quote]

是,增加note,而不是增加 Attribute
行舟 2010-09-30
  • 打赏
  • 举报
回复
你代码有问题·
_row.addAttribute("name","Edward");
_row.addAttribute("sex","Male");
_row.addAttribute("age","28");

应该对应增加三个子节点!

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧