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>

浙公网安备 33010602011771号