JSP 读取 XML文件的内容

the8thsummer 2011-07-15 11:29:46
我需要在JSP中读取工程WebContent下的XML文件.
在网上找了一份参考的代码.但我看不懂.请高人给注释.包括每个包的作用.
<%@ page import = "java.io.*
,java.util.*
,org.w3c.dom.*
,javax.xml.parsers.DocumentBuilder
,javax.xml.parsers.*
,javax.xml.transform.*
,javax.xml.transform.stream.StreamResult
,javax.xml.transform.dom.DOMSource" %>


<%
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(pageContext.getServletContext().getResourceAsStream("test.xml"));
doc.normalize();
NodeList names = doc.getElementsByTagName("name");
String name = names.item(0).getFirstChild().getNodeValue();
name = new String(name.getBytes("gbk"));
out.println(name);
%>

这里假设test.xml内容为
<?xml version="1.0" encoding="gbk"?>
<xml>
<customer>
<name>张三和李四</name>
</customer>
</xml>


另外.我用该代码测试的时候会报错.读取不到test.xml.是不是我路径写的有问题.
我的text.xml文件是放在工程的/webcontent/web-inf/目录下的.
...全文
270 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zl3450341 2011-07-15
  • 打赏
  • 举报
回复
pageContext.getServletContext()

不好意思。。看错了。是ServletContext.. 放到webRoot目录下就可以了
the8thsummer 2011-07-15
  • 打赏
  • 举报
回复
问题解决了.原来test.xml放到WEBCONTENT下就可以了.谢谢
the8thsummer 2011-07-15
  • 打赏
  • 举报
回复
感谢大胡子同学.代码理解了.但是吧test.xml拷贝到src下还是不行.
报错说:

exception

org.apache.jasper.JasperException: java.lang.IllegalArgumentException: InputStream cannot be null

应该是没有得到文件流.是不是
db.parse(pageContext.getServletContext().getResourceAsStream("test.xml"));
的路径的问题.
zn85600301 2011-07-15
  • 打赏
  • 举报
回复
web-inf/目录下 是不能直接访问的

拷到别的目录下 试试
zl3450341 2011-07-15
  • 打赏
  • 举报
回复
//这些初始化信息就不解释了,看类名都应该懂。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = dbf.newDocumentBuilder();
//将test.xml转换为一个Document对象
Document doc = db.parse(pageContext.getServletContext().getResourceAsStream("test.xml"));
doc.normalize();
//获取所有的name结点
NodeList names = doc.getElementsByTagName("name");
//获取第一个结点的第一个孩子结点
String name = names.item(0).getFirstChild().getNodeValue();
//将name用gbk进行编码
name = new String(name.getBytes("gbk"));
out.println(name);

test.xml放到src目录下

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧