如何使用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页面上,有什么办法吗?最好能给出具体的实现代码,谢谢!
...全文
156 9 点赞 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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");

应该对应增加三个子节点!
  • 打赏
  • 举报
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2010-09-30 09:48
社区公告
暂无公告