Struts2+Hibernate+Spring开发,Struts2的Action怎样输出一个xml文件,这个文件的内容组成是由数据库中的用户表中的相关字段构成,比如:
<?xml version="1.0" encoding="big5" ?>
- <data>
- <user>
<name>cary</name>
<ip>192.168.1.1</ip>
<state>0</state>
</user>
- <user>
<name>apple</name>
<ip>192.168.1.1</ip>
<state>0</state>
</user>
</data>
<?xml version="1.0" encoding="big5" ?>
- <data>
- <user>
<name>cary</name>
<ip>192.168.1.1</ip>
<state>0</state>
</user>
- <user>
<name>apple</name>
<ip>192.168.1.1</ip>
<state>0</state>
</user>
</data>
解决方案 »
- pstmt=conn.prepareStatement(sql)空指针异常,求大神支招
- 很怪的问题org.hibernate.MappingException: Unknown entity,求解
- 一个数据库表设计问题
- 一个关于Struts的简单问题
- java代码为什么只执行两条sql的第一条?
- hibernate_Oracle联合主键插入数据主键值为0
- 关于网站开发小弟有个知识点不会了希望在这里有高手帮忙解决解决不胜感激
- 聘请JAVA软件工程师,能够在通过网络辅导我!报酬面议!
- 请教weblogic配置,providerURL=t3://localhost:7001 是什么意思?
- 用iterator构造一个餐单table 然后想要每行有增减数量的按钮和显示数量的text怎么实现
- 用jmf为何在eclipse下没反应,在dos下却正常?
- 关于Xfire的问题~
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class DataToXML {
YourService yourService=new YourService ();
private static Document document;
//private String filename="mydata.xml";
static{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
document = builder.newDocument();
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
//生成xml列表
public void writeToXMLList(String name,String filename){
List list=yourService.getMessageByName(name);//查询出你需要的数据列表
Element root=document.createElement("data");
document.appendChild(root);
for(int i=0;i<list.size();i++){
YourDomain input=(YourDomain)list.get(i);
Element ele=document.createElement("user");
root.appendChild(ele);
Element id=document.createElement("name");
id.setTextContent(input.getName()+"");
ele.appendChild(id);
Element name1=document.createElement("ip");
name1.setTextContent(input.getIp());
ele.appendChild(name1);
Element lng=document.createElement("status");
status.setTextContent(input.getLng()+"");
ele.appendChild(status);
}
this.saveXML(filename);
}
private void saveXML(String filename){
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(filename));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
} catch (TransformerException mye) {
mye.printStackTrace();
} catch (IOException exp) {
exp.printStackTrace();
}
}
}
首先要谢谢你的代码,这里有
Element lng=document.createElement("status");
status.setTextContent(input.getLng()+"");
ele.appendChild(status); status应改为lng。另外一个就是还没有搞清楚的,怎样把它返回都界面上,我们给一个URL,点击是就打开一个页面,这个页面的内容就是上面的XML文件内容?
struts的resultType可以返回XSL Result,可以看struts2自带的app中的showcase例子,这个例子比较简单
再结合http://wiki.javascud.org/display/ww2cndoc/XSL+Result不过楼主还需要学习一下xsl,所以还得看下这里
http://www.ibm.com/developerworks/cn/xml/theme/x-xsl.html
out.println("<response>");
... out.close();
outPut = new String(outPut.getBytes("utf8"), "ISO-8859-1");byte[] byteArray = xml.getBytes("utf8");第一次是正常打开xml文件,汉字不会乱码,但当我刷新一遍是就乱码了,调试了几种中文处理代码,但还是不能解决刷新乱码问题。还望各位继续给予帮助。