如何用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>

解决方案 »

  1.   

    可以用dom或者sax,至于例子,google一下就很多了...
      

  2.   

    如果要在jsp里面显示的话
    用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;  
            }  
     
        }
    }
      

  3.   

    最好用Jdom写。
      

  4.   

    DOM的例子
    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);
    }


    }
      

  5.   

    简单示例package test;import java.io.File;
    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>
      

  6.   

    数据调用到了,还要在jsp里面显示数据。
      

  7.   

      既然你都能拿到数据了页面还搞不定???
        学Java的应该有学习能力撒。
      

  8.   

    http://earl86.javaeye.com/blog/296195