遇到一個問題:需要將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
>