jsp解析xml文件

遇到一个问题:需要将xml信息通过jsp加载:
主要是两个问题:
1:xml文件相对于jsp页面路径的选择;
2:xml加载成功并且正确解析
xml信息:
<products>
       <product title="aaaa" id="11111">
             <part title="aaa_part" >
                   <info>iinfo1</ info>
                   <info>info2</info>
             </part>
             <part title="aaa_part1" >
                   <info>iinfo3</ info>
                   <info>info4</info>
             </part>
       </product>
      
          <product title="aaaa" id="11111">
             <part title="aaa_part" >
                   <info>iinfo1</ info>
                   <info>info2</info>
             </part>
             <part title="aaa_part1" >
                   <info>iinfo3</ info>
                   <info>info4</info>
             </part>
       </product>
</products>
 

jsp文件代码:
<%@ page language= "java" contentType ="text/html; charset=UTF-8"
    pageEncoding="UTF-8" %>
<%@ page import="java.io.File,javax.xml.parsers.DocumentBuilder" %>
<%@ page import="javax.xml.parsers.DocumentBuilderFactory" %>
<%@ page import="org.w3c.dom.Document" %>
<%@ page import="org.w3c.dom.NodeList" %>
<%@ page import="org.w3c.dom.Node" %>
<%@ page import="org.w3c.dom.NamedNodeMap" %>
<%@ page import="org.w3c.dom.Element" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>。。。。。</title>
</head>
<body>
       <a href="javascript:history.go(-1);" class="previous"></ a>
 
       <%
            String procode=request.getParameter( "procode");
            String xml= null;
            String url= null;
             if(procode.length()>4){
                   //xml=url.substring(0, url.lastIndexOf('/'))+"/xml/"+procode.subSequence(0, 4)+".xml";
                   xml= "/xml/"+procode.subSequence(0, 4)+".xml" ;
                   //url=request.getServletContext().getRealPath(xml);
                   //url=request.getRequestURI().substring(0, request.getRequestURI().lastIndexOf('/'))+xml;
                   //url=request.getRequestURL().toString();
                  url=application.getRealPath(request.getRequestURI());
                  System.out.println( "realurl="+url);
                  url=url.substring(0, url.lastIndexOf( '/'))+xml;
                   //url="WebContent/chinapost/weixin/finanProIntroduct/"+xml; 
            }
            System.out.println( "url="+url);
            System.out.println( "xml="+xml);
             try{
                  File f= new File(url);
                  DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
                  DocumentBuilder builder=factory.newDocumentBuilder();
                  Document doc=builder.parse(f);
                  NodeList nl=doc.getElementsByTagName( "product");
                  Element product= null;
                   for(int i=0;i<nl.getLength();i++){
                        Element node=(Element)nl.item(i);
                        String id=node.getAttribute( "id");
                        if(procode.equals(id)){
                              product=node;
                               break;
                        }
                  }
                  
                  String title=product.getAttribute( "title");
                  out.println( "<h1 class=\"art_title\">" +title+"</h1>");
                  String explain= null;
                   try{
                              explain=product.getAttribute( "explain");
                   if(explain!=null&&!"".equals(explain)){
                        out.println( "<ul class=\"art_ul\"><li>"+explain+ "</li></ul>");
                  }
                  } catch(Exception e){
                        System.out.println( "..........." );
                  }
                  out.println( "<div class=\"art_content\">" );
                  NodeList parts =product.getElementsByTagName( "part");
                   for(int i=0;i<parts.getLength();i++){
                        Element node=(Element)parts.item(i);
                         //NamedNodeMap partMap=node.getAttributes();
                         //String partTitle=partMap.getNamedItem("title").getNodeValue();
                        String partTitle=node.getAttribute( "title");
                        out.println( "<h2 class=\"art_h2 art_h2_1\">"+partTitle+"</h2>");
                        out.println( "<ul class=\"art_ul\">" );
                              NodeList infos=node.getElementsByTagName("info" );
                               for(int j=0;j<infos.getLength();j++){
                                    Element info=(Element)infos.item(j);
                      //获取元素<info>中的信息
                                    out.println( "<li>"+info.getFirstChild().getNodeValue()+"</li>");
                              }
                        out.println( "</ul>");
                  }
                  out.println( "</div>");
                  
            } catch(Exception e){
                  e.printStackTrace();
            }
            
       %>
</body>
</html>
 
posted @ 2016-06-16 10:27  dongfengbulai  阅读(2328)  评论(0)    收藏  举报