如何用java代码调用xml里的数据,在jsp上面显示。 能够给点代码参考跟好。谢谢
xml: <?xml version="1.0" encoding="UTF-8" ?>
- <students>
- <student>
<id>1</id>
<name>张华</name>
<datetime>1990-10-25 01:23:12.0</datetime>
</student>
</students>
xml: <?xml version="1.0" encoding="UTF-8" ?>
- <students>
- <student>
<id>1</id>
<name>张华</name>
<datetime>1990-10-25 01:23:12.0</datetime>
</student>
</students>
解决方案 »
- struts2标签如何赋值到javascript代码中
- struts2查询原文件编码问题
- 字符串解析问题--急!
- 求教:Hibernate使用proxool连接池在执行session.beginTransaction()时老抛异常
- 面试问题:Hibernate session接口的get和load方法有何异同?Struts中HttpServletRequest的getParameter和getAttribute方法有什么区别?
- 关于hibernate的问题~!!求助!!!
- 购物车在Struts的实现是怎样实现的请高手们帮帮小弟!多谢
- hibernate和spring的配置文件是分开时,在spring配置中怎么使用dataSource?
- JSP中显示Timestamp的数据类型时出现秒后面还有三位小数点的情况怎么解决?
- Tomcat的问题
- 请问 读取浏览器证书问题
- 一个关于RSS源的问题
用dom4j解析后,把分解出来的显示出来就行了。不过最好用XSL+XML生成HTML的方式更好一些
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
public class XMLConverter { public String convert (String xmlString,String xslfile) throws Exception
{
try {
ByteArrayInputStream xmlStream = new ByteArrayInputStream(xmlString.getBytes());
ByteArrayOutputStream byteRep = new ByteArrayOutputStream();
TransformerFactory transformerFactory = TransformerFactory.newInstance();
StreamSource source = new StreamSource(xmlStream);
StreamResult result = new StreamResult(byteRep);
StreamSource style = new StreamSource(xslfile);
Transformer transformer = transformerFactory.newTransformer(style);
transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "GBK");
transformer.transform(source, result);
return byteRep.toString();
}
catch (Exception e) {
e.printStackTrace();
throw e;
//return null;
}
}
}
package com.plas.util;import java.io.FileWriter;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;import com.plas.pojo.bean.SysAreacate;
import com.plas.pojo.bean.SysNewsCate;
import com.plas.pojo.bean.SysNewsSource;public class AnalysisXML { //指定xml解析器,设置默认解析器
private SAXBuilder builder;
private Document document;
private Element roots;
private String xmlpath ;
/**
* 初始化信息
* @param xmlpath
*/
public AnalysisXML(String xmlpath){
builder = new SAXBuilder(false);
try {
document = builder.build(xmlpath);
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//获得xml文档
roots = document.getRootElement();//获得根元素
this.xmlpath = xmlpath;
}
public AnalysisXML(){
}
/**
* 添加,修改产品分类
* @param id 当前编号
* @param name
* @param code
*/
public void update(String sid,String name,String code,String fid,int sign){
Element ele = null;
if(sign==1){//修改产品分类
ele = recursiveXml(roots.getChildren("cate"),code);
ele.getChild("name").setText(name);
ele.getChild("code").setText(code);
ele.setAttribute("id",sid);
saveXml();
}else{//添加产品分类
ele = recursiveXml(roots.getChildren("cate"),fid);
Element subele = new Element("cate");
Element namele = new Element("name");
Element codele = new Element("code");
subele.setAttribute("id",sid);
namele.setText(name);
codele.setText(code);
ele.addContent(subele.addContent(namele).addContent(codele));
saveXml();
}
}
/**
* 删除
* @param cateid
* @return
*/
public String delete(String cateCode){
Element ele =null;
deleteXml(roots.getChildren("cate"),cateCode);
saveXml();
return null;
}
public String delete(Long cateCode){
Element ele =null;
deleteXml(roots.getChildren("cate"),cateCode);
saveXml();
return null;
}
/**
* 递归查找xml
* @param sublist
* @param conint
* @return
*/
public Element recursiveXml(List sublist,String catecode){
if(catecode.equals("0")) return roots;
if(sublist==null) return null;
Element ele = null;
for(int i=0;i<sublist.size();i++){
ele = (Element)sublist.get(i);
if(ele.getAttributeValue("id").equals(catecode)){
return ele;//返回结果集
}else{
ele = recursiveXml(ele.getChildren("cate"),catecode);
if(ele!=null && ele.getAttributeValue("id").equals(catecode))
return ele;//返回结果集
}
}
return null;
}
/**
* 递归查找xml
* @param sublist
* @param conint
* @return
*/
public Element recursivenewsXml(List sublist,Long cateid){
if(cateid==0) return roots;
if(sublist==null) return null;
Element ele = null;
for(int i=0;i<sublist.size();i++){
ele = (Element)sublist.get(i);
if(Integer.parseInt(ele.getAttributeValue("id"))==cateid){
return ele;//返回结果集
}else{
ele = recursivenewsXml(ele.getChildren("cate"),cateid);
if(ele!=null && Integer.parseInt(ele.getAttributeValue("id"))==cateid)
return ele;//返回结果集
}
}
return null;
}
/**
* 递归查找删除
* @param sublist
* @param cateid
* @return
*/
public int deleteXml(List sublist,String cateCode){
Element ele = null;
for(int i=0;i<sublist.size();i++){
ele = (Element)sublist.get(i);
if(cateCode.equals(ele.getAttributeValue("id"))){
sublist.remove(i);
}else{
int j = deleteXml(ele.getChildren("cate"),cateCode);
if(j!=0)
ele.getChildren("cate").remove(j);//返回结果集
}
}
return 0;
}
public int deleteXml(List sublist,Long cateCode){
Element ele = null;
for(int i=0;i<sublist.size();i++){
ele = (Element)sublist.get(i);
if(cateCode==Integer.parseInt(ele.getAttributeValue("id"))){
sublist.remove(i);
}else{
int j = deleteXml(ele.getChildren("cate"),cateCode);
if(j!=0)
ele.getChildren("cate").remove(j);//返回结果集
}
}
return 0;
}
public void modifyXml(String id,String name,String code){
}
/**
* 更改xml的内容
*
*/
public void saveXml(){
Format format = Format.getCompactFormat();
format.setEncoding("gb2312");//设置文本编码
format.setIndent(" ");//设置换行缩进
FileWriter writer;
XMLOutputter output;
try {
writer = new FileWriter(xmlpath);
output = new XMLOutputter(format);
output.output(document, writer);
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*这是查询例子 根据一个值查询 然后在方法里面调用 ajax返回就可以
*
*/
public String getrootcate(String code){
List cate = null;
StringBuffer buffer = new StringBuffer("<cates>");
if(code.equals("0")){
cate = roots.getChildren("cate");
}else{
cate = recursiveXml(roots.getChildren("cate"),code).getChildren("cate");
}
for(int i=0;cate!=null && i<cate.size();i++){
Element ele = (Element)cate.get(i);
buffer.append("<cate><id>");
buffer.append(ele.getAttributeValue("id"));
buffer.append("</id><name>");
buffer.append(ele.getChild("name").getText().replaceAll("_", "/"));
buffer.append("</name></cate>");
}
buffer.append("</cates>");
return buffer.toString();
} public String findbyid(long id){
return recursivenewsXml(roots.getChildren("cate"),id).getChild("name").getText();
}
public String findbyid(String code){
return recursiveXml(roots.getChildren("cate"),code).getChild("name").getText();
} public String findcode(long id){
return recursivenewsXml(roots.getChildren("cate"),id).getChild("code").getText();
}
public String findcode(String code){
return recursiveXml(roots.getChildren("cate"),code).getChild("code").getText();
}
public Document getDocument(String xmlpath) {
builder = new SAXBuilder(false);
try {
document = builder.build(xmlpath);
} catch (JDOMException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//获得xml文档
return document;
}
/**
* 查找某个元素
* @param id
* @return
*/
public Element getOneElement(long id){
return recursivenewsXml(roots.getChildren("cate"),id);
}
public Element getOneElement(String code){
return recursiveXml(roots.getChildren("cate"),code);
}
}
import java.io.IOException;import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.SAXException;public class Dom{ public static void main(String[] args) {
try {
File file = new File("D:\\dom.xml");
DocumentBuilderFactory dobf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dobf.newDocumentBuilder();
Document dc=db.parse(file);
NodeList ndl=dc.getElementsByTagName("VALUE");
for(int i=0;i<ndl.getLength();i++){
String noum=dc.getElementsByTagName("NO").item(i).getTextContent();
System.out.println(noum);
String add=dc.getElementsByTagName("ADDR").item(i).getTextContent();
System.out.println(add);
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}catch(SAXException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<RESULT>
<VALUE>
<NO>A1234</NO>
<ADDR>深圳XX</ADDR>
</VALUE>
<VALUE>
<NO>B1234</NO>
<ADDR>珠海XXX</ADDR>
</VALUE>
</RESULT>
学Java的应该有学习能力撒。