如何用java语言生成xml文件,并将它返回

renweizi 2008-04-14 10:22:53
最好能有个小例子,就是读数据库,将读出来的数据生成一个xml文件,我要在别的类中获得这个文件,如何解决?
...全文
1582 19 打赏 收藏 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingralf 2010-07-20
  • 打赏
  • 举报
回复
什么数据库?db2 9.5直接支持返回xml形式的数据
zhangshichuan119 2010-07-20
  • 打赏
  • 举报
回复
将数据库字符串读出写入xml标签存为一个路径将此路径记录到数据库 在类读取时直接读取这个路径文件
zhangshichuan119 2010-07-20
  • 打赏
  • 举报
回复
生成的示例文件

<info><switch><normal_switch>1</normal_switch><atm_switch>1</atm_switch><block_switch>1</block_switch><double_up_switch>1</double_up_switch></switch><channel><atm></atm><normal><id>1</id><operator>1</operator><number>1066776</number><content>X11_%ORIGINID%_IMSI%_%APPID%</content><tip>您将选择使用由长沙掌讯公司提供的短信乐园业务,信息费2元/条,继续点播开始享受服务,返回则不扣费。客服电话:010-62045699</tip></normal></channel><sms_block><block_number>10086</block_number><block_chinese>长沙掌讯</block_chinese><block_chinese>短信乐园</block_chinese></sms_block><double_up><keyword>长沙掌讯</keyword><keyword>短信乐园</keyword><keyword>回复任意</keyword><upword>1111</upword></double_up><update_time>1</update_time><update_url><charge>计费文件的更新地址</charge><fingergirl><pic_list>图片菜单列表地址</pic_list><pic_adder>图片地址</pic_adder></fingergirl></update_url><statistics><number>号码</number><content>指令</content></statistics></info>


生成的步骤 其中的DataContainer 封装了数据库连接代码

package com.yixun.servlet.charge;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.yixun.db.mssql.connpool.DataContainer;
import com.yixun.db.mssql.connpool.OperationDbase;
import com.yixun.tool.util.UTIL;
/*
* 生成省份规则文件
*/
public class ScProvinceXml extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request, response);
}


public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
StringBuffer sBuffer = new StringBuffer();
// 上行内容
StringBuffer sb = new StringBuffer();
// 屏蔽中文关键字
StringBuffer sb1 = new StringBuffer();
// 屏蔽中文关键字
StringBuffer sb2 = new StringBuffer();
// 二次确认关键字
StringBuffer sb3 = new StringBuffer();
// 屏蔽号码
StringBuffer sb4 = new StringBuffer();
String id = request.getParameter("id");
String operatorid = request.getParameter("opid");
String sql = "select * from GZ_provinces where id='" + id + "'";
DataContainer dt = OperationDbase.execPureQuery(sql);
String pbzhsql="select * from pbzh where id in("+dt.outData(0, "pbzh").trim()+")";
String pbensql="select * from pben where id in("+dt.outData(0, "pben").trim()+")";
String pbnusql="select * from pbnu where id in("+dt.outData(0, "pbnu").trim()+")";
DataContainer pbzhdt=OperationDbase.execPureQuery(pbzhsql);
DataContainer pbnudt=OperationDbase.execPureQuery(pbnusql);
DataContainer pbendt=OperationDbase.execPureQuery(pbensql);
//屏蔽号码
String pbtdnustr="";
String pbnustr="";
for (int i = 0; i < pbnudt.getRowSize(); i++) {
if (!UTIL.screenNullStr(pbnudt.outData(i, "number")).equals("")) {
pbnustr+="<block_number>"+pbnudt.outData(i, "number")+"</block_number>";
}

}
//屏蔽中文關鍵字
String pbzhstr="";
for (int i = 0; i < pbzhdt.getRowSize(); i++) {
if (!UTIL.screenNullStr(pbzhdt.outData(i, "zh")).equals("")) {
pbzhstr+="<block_chinese>"+pbzhdt.outData(i, "zh")+"</block_chinese>";

}
}
//屏蔽英文關鍵字
String pbenstr="";
for (int i = 0; i < pbendt.getRowSize(); i++) {
if (!UTIL.screenNullStr(pbendt.outData(i, "en")).equals("")) {
pbenstr+="<block_english>"+pbendt.outData(i, "en")+"</block_english>";
}
}
String tdsql = "";
String atdsql = "";
String tdatmsql = "";
String tdsatmsql = "";
String atdsatmsql = "";
String tdssql = "";
atdsql = "select * from GZ_asport where id =" + dt.outData(0, "tdsid") + "";
atdsatmsql = "select * from GZ_ATMasport where id =" + dt.outData(0, "tdatmsid") + "";
tdsql = "select * from GZ_port where id =" + dt.outData(0, 2) + "";
tdatmsql = "select * from GZ_ATMport where id =" + dt.outData(0, 4)
+ "";
tdsatmsql = "select * from GZ_ATMsport where id =" + dt.outData(0, 5)
+ "";
tdssql = "select * from GZ_sport where id =" + dt.outData(0, 3) + "";
DataContainer tddt = OperationDbase.execPureQuery(tdsql);
DataContainer tdatmdt = OperationDbase.execPureQuery(tdatmsql);
DataContainer tdsdt = OperationDbase.execPureQuery(tdssql);
DataContainer tdsatmdt = OperationDbase.execPureQuery(tdsatmsql);
DataContainer atdsdt = OperationDbase.execPureQuery(atdsql);
DataContainer atdsatmdt = OperationDbase.execPureQuery(atdsatmsql);
String tdids="";
if (atdsdt.getRowSize()!=0) {
tdids+=atdsdt.outData(0, 1).trim().equals("")?"":atdsdt.outData(0, 1).trim()+",";
}
if (atdsatmdt.getRowSize()!=0) {
tdids+=atdsatmdt.outData(0, 1).trim().equals("")?"":atdsatmdt.outData(0, 1).trim()+",";
}


if (tddt.getRowSize()!=0) {
tdids+=tddt.outData(0, 1).trim().equals("")?"":tddt.outData(0, 1).trim()+",";
}
if (tdatmdt.getRowSize()!=0) {
tdids+=tdatmdt.outData(0, 1).trim().equals("")?"":tdatmdt.outData(0, 1).trim()+",";
}
if (tdsdt.getRowSize()!=0) {
tdids+=tdsdt.outData(0, 1).trim().equals("")?"":tdsdt.outData(0, 1).trim()+",";
}
if (tdsatmdt.getRowSize()!=0) {
tdids+=tdsatmdt.outData(0, 1).trim().equals("")?"":tdsatmdt.outData(0, 1).trim()+",";
}
tdids=tdids.endsWith(",")?tdids.substring(0,tdids.length()-1):tdids;

sBuffer.append("<info><switch><normal_switch>" + dt.outData(0, 10)
+ "</normal_switch><atm_switch>" + dt.outData(0, 13)
+ "</atm_switch><block_switch>" + dt.outData(0, 12)
+ "</block_switch><double_up_switch>" + dt.outData(0, 11)
+ "</double_up_switch></switch><channel><atm>");
String ATMList="";

String tdatmdtstr="";
if (!tdatmdt.outData(0, 1).trim().equals("")) {
tdatmdtstr+=tdatmdt.outData(0, 1).trim()+",";
}
if (!tdsatmdt.outData(0, 1).trim().equals("")) {
tdatmdtstr+=tdsatmdt.outData(0, 1).trim()+",";
}
if (!atdsatmdt.outData(0, 1).trim().equals("")) {
tdatmdtstr+=atdsatmdt.outData(0, 1).trim();
}
if (tdatmdtstr.trim().endsWith(",")) {
tdatmdtstr=tdatmdtstr.substring(0,tdatmdtstr.length()-1);
}
ATMList = "select * from port_message where id in("+tdatmdtstr+ ")";

DataContainer ATMpList = OperationDbase.execPureQuery(ATMList);
for (int i = 0; i < ATMpList.getRowSize(); i++) {
sb4.append("" + ATMpList.outData(i, 0) + ",");
String mystrString=ATMpList.outData(i, 4);
mystrString=mystrString.replaceAll("&", "(and)");
mystrString=mystrString.replaceAll("%", "(p)");
String tipString=ATMpList.outData(i, 6).trim();
if (tipString.endsWith("无")) {
tipString="";
}
sBuffer.append("<id>" + (i+1)
+ "</id><operator>" + ATMpList.outData(i, 1)
+ "</operator><number>" + ATMpList.outData(i, 3)
+ "</number><content>" + mystrString
+ "</content><tip>" + tipString
+ "</tip>");


sb4.append("" + ATMpList.outData(i, 0) + ",");

}
String tdString= "";
String stdString="";
if (UTIL.screenNullStr(tddt.outData(0, 1).trim()).length()!=0) {
stdString=tdString=tddt.outData(0, 1).trim();
}
if (UTIL.screenNullStr(tdsdt.outData(0, 1).trim()).length()!=0) {
if (tdString.length()!=0) {
stdString=tdString+=","+tdsdt.outData(0, 1).trim();
}
else {
stdString=tdString=tdsdt.outData(0, 1).trim();
}}
if (UTIL.screenNullStr(atdsdt.outData(0, 1).trim()).length()!=0) {
if (tdString.length()!=0) {
stdString=tdString+=","+atdsdt.outData(0, 1).trim();
}
else {
stdString=tdString=atdsdt.outData(0, 1).trim();
}

}

sBuffer
.append("<update_url><charge>"+dtaddr.outData(0, "addr")+"</charge><fingergirl><pic_list>"+dtfgg.outData(0, "pic_list")+"</pic_list><pic_adder>"+dtfgg.outData(0, "pic_adder")+"</pic_adder></fingergirl></update_url><statistics><number>"+dttj.outData(0, "number")+"</number><content>"+dttj.outData(0, "cmmand")+"</content></statistics></info>");
//System.out.println(sBuffer);
response.setContentType("text/xml;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.print("" + sBuffer + "");
out.flush();
out.close();
}
/*
public static void main(String [] args){

String mystrString="zh%a&ng&you";



System.out.println(mystrString);



}*/

}



huazhiyu1981 2010-07-20
  • 打赏
  • 举报
回复
学习了!!!
cycloneTeam 2010-07-20
  • 打赏
  • 举报
回复
dom4j-1.5.2.jar 找下API看看就明白了
呼吸先生 2010-07-20
  • 打赏
  • 举报
回复
DOM4j JDOM都可以生成,还有JAXB,LZ自己baidu吧。
危险的大猫 2010-07-20
  • 打赏
  • 举报
回复
mark
Arthur0088 2010-07-20
  • 打赏
  • 举报
回复
提供以下思路:

a. 从数据库中获取集合List
b. 循环读取List,然后通过dom4j来操作xml
c. 首先创建xml文件,然后按照你要的格式进行add(具体操作请看dom4j)
ronniegxq 2010-07-20
  • 打赏
  • 举报
回复
Document document = DocumentHelper.createDocument();
xuexijava 2010-07-20
  • 打赏
  • 举报
回复
mark..............
lxb_2561 2010-07-20
  • 打赏
  • 举报
回复
学习下
myhope88 2010-07-20
  • 打赏
  • 举报
回复
路过,帮顶下
gushangzao 2010-07-20
  • 打赏
  • 举报
回复
学习了
6216 2008-04-17
  • 打赏
  • 举报
回复
用dom4j创建xml 当然方法还是有很多的


实例:
holen.xml

<?xml version="1.0" encoding="UTF-8"?>

<books>

<!--This is a test for dom4j, holen, 2004.9.11-->

<book show="yes">

<title>Dom4j Tutorials</title>

</book>

<book show="yes">

<title>Lucene Studing</title>

</book>

<book show="no">

<title>Lucene in Action</title>

</book>

<owner>O'Reilly</owner>

</books>

建立一个XML文档:

/**

* 建立一个XML文档,文档名由输入属性决定

* @param filename 需建立的文件名

* @return 返回操作结果, 0表失败, 1表成功

*/

public int createXMLFile(String filename){

/** 返回操作结果, 0表失败, 1表成功 */

int returnValue = 0;

/** 建立document对象 */

Document document = DocumentHelper.createDocument();

/** 建立XML文档的根books */

Element booksElement = document.addElement("books");

/** 加入一行注释 */

booksElement.addComment("This is a test for dom4j, holen, 2004.9.11");

/** 加入第一个book节点 */

Element bookElement = booksElement.addElement("book");

/** 加入show属性内容 */

bookElement.addAttribute("show","yes");

/** 加入title节点 */

Element titleElement = bookElement.addElement("title");

/** 为title设置内容 */

titleElement.setText("Dom4j Tutorials");



/** 类似的完成后两个book */

bookElement = booksElement.addElement("book");

bookElement.addAttribute("show","yes");

titleElement = bookElement.addElement("title");

titleElement.setText("Lucene Studing");

bookElement = booksElement.addElement("book");

bookElement.addAttribute("show","no");

titleElement = bookElement.addElement("title");

titleElement.setText("Lucene in Action");



/** 加入owner节点 */

Element ownerElement = booksElement.addElement("owner");

ownerElement.setText("O'Reilly");



try{

/** 将document中的内容写入文件中 */

XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));

writer.write(document);

writer.close();

/** 执行成功,需返回1 */

returnValue = 1;

}catch(Exception ex){

ex.printStackTrace();

}



return returnValue;

}




说明:

Document document = DocumentHelper.createDocument();

通过这句定义一个XML文档对象。



Element booksElement = document.addElement("books");

通过这句定义一个XML元素,这里添加的是根节点。

Element有几个重要的方法:

l addComment:添加注释

l addAttribute:添加属性

l addElement:添加子元素

token1984 2008-04-17
  • 打赏
  • 举报
回复
学习
KK3K2005 2008-04-14
  • 打赏
  • 举报
回复
很直白了
除了D步 你去看下 XML处理的API就可以了
renweizi 2008-04-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 KK3K2005 的回复:]
A。读取数据库
B。从数据库中读的数据写入XML对象(简单点的话就自己生成一个XML格式的字符串)
C。字符串写入文件,或者XML对象写入文件
D。读取这个XML文件

四步完全是独立的 LZ一个一个解决把
[/Quote]
我的问题就是任何解决 B C D,你能有个小例子吗?不读数据库也行
njaufire 2008-04-14
  • 打赏
  • 举报
回复
楼上的能不能给个例子啊
KK3K2005 2008-04-14
  • 打赏
  • 举报
回复
A。读取数据库
B。从数据库中读的数据写入XML对象(简单点的话就自己生成一个XML格式的字符串)
C。字符串写入文件,或者XML对象写入文件
D。读取这个XML文件

四步完全是独立的 LZ一个一个解决把

81,108

社区成员

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

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