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 >
 

转载于:https://www.cnblogs.com/buchao/p/5590101.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值