在WEB工程中,jsp文件如何读取XML文件的信息?

想了解其他文件读取XML文件的原理过程,工程中的其他文件就只是通过XML中的命名来访问XML文件信息么?是不是放在指定的根目录下(jsp文件与WEB-INF文件夹在同一目录下,而XML文件在WEB-INF文件夹下),jsp文件会自动寻找相应的XML文件么?我将一个在myeclipse下写好的XML文件放入另外一个运行的工程中,为什么不能调用?JDOM解析XML文件什么意思?是说把JDOM程序包放入工程中就能把XML文件解析为JSP 能识别的文件的类型,否则JSP文件无法找到XML文件?

jsp中读取xml文件中内容的方法,案例如下:

1、XML文件

<?xml version="1.0" encoding="GB2312" ?> 
<!-- ä¸ªäººå±¥åŽ†è¡¨--> 
<resume>
<person id="01">
   <name>张三</name> 
   <birthday>03/24/1975</birthday>  
   <phone>1111-1111</phone> 
   <address>大连</address>
</person>  
<person id="02">
   <name>李四</name> 
   <birthday>9/26/1978</birthday>  
   <phone>2222-2222</phone> 
   <address>南京</address>
</person>   
<person id="03">
   <name>王五</name> 
   <birthday>11/09/1979</birthday>  
   <phone>3333-3333</phone> 
   <address>武汉</address>
</person>   
<person id="04">
   <name>赵六</name> 
   <birthday>6/04/1973</birthday>  
   <phone>4444-4444</phone> 
   <address>青岛</address>
</person>   
<person id="05">
   <name>陈七</name> 
   <birthday>12/19/1977</birthday>  
   <phone>5555-5555</phone> 
   <address>上海</address>
</person>   
</resume>

2、MyDOMBean.java

package test;
import org.xml.sax.*; 
import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;

public class MyDOMBean implements java.io.Serializable ...{
   private static String xmlStr="";
   private static final String PATH="file:///";
   public MyDOMBean() ...{
   }

   public String getString()...{
        return xmlStr;
   }

   public static Document getDocument(String filename) throws Exception ...{
       xmlStr="";
       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        // è®¾å®šè§£æžçš„叁数
        dbf.setIgnoringComments(true);
        dbf.setIgnoringElementContentWhitespace(true);
        DocumentBuilder db = dbf.newDocumentBuilder();
        //导入XML文件
        Document doc = db.parse(PATH+filename);
       
       return doc;
   }

     public void traverseTree(Node node) throws Exception ...{
         if(node == null) ...{
            return;
         }
         int type = node.getNodeType();

         switch (type) ...{
            // æ“ä½œDOCUMENT对象节点
            case Node.DOCUMENT_NODE: ...{
               xmlStr+="<tr>";
               traverseTree(((Document)node).getDocumentElement());
               break;
            }
            // æ“ä½œXML元素节点
            case Node.ELEMENT_NODE: ...{
               String elementName = node.getNodeName();
               if(elementName.equals("person")) ...{
                 xmlStr+="</tr><tr>";
               }
               NodeList childNodes =node.getChildNodes();
               if(childNodes != null) ...{
                  int length = childNodes.getLength();
                  for (int loopIndex = 0; loopIndex <
                  length ; loopIndex++)
                  ...{
                     traverseTree(childNodes.item(loopIndex));
                  }
               }
               break;
            }
            // æ“ä½œXML文本节点
            case Node.TEXT_NODE: ...{
               String data = node.getNodeValue().trim();
               if((data.indexOf(" ")  <0) && (data.length()> 0)) ...{
                 xmlStr+="<td>"+data+"</td>";
               }
            }
         }
    }

}

3、jsp文件

<html>
<head>
<title>使用DOM解析器</title>
</head>
<%...@ page import="org.w3c.dom.*"%>
<%...@ page contentType="text/html;charset=GB2312" %>
<body bgcolor="#CFF1E1">
<center>
<h2>个人履历表(DOM版)</h2>
<table border="1" width="80%">
<tr>
<td>姓名</td>
<td>出生年月</td>
<td>电话号码</td>
<td>居住地</td>
</tr>
<jsp:useBean id="domparser" class="test.MyDOMBean" />
<%...  
   Document doc = domparser.getDocument(request.getRealPath("/") + "08_02.xml");
   domparser.traverseTree(doc);
   out.print(domparser.getString());
%>
</body>
</html>
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-12-15
jsp文件应该会自动寻找相应的XML文件,放入JDOM插件后也一样,只是在这个插件里面提供了很多访问XML文件的方法。如果我们要去读取自己新建的一个XML文件的数据,还是只有自己重新写个方法,然后在这个方法里面调用JDOM提供的方法读取,并根据自己的意愿组织数据。追问

我在myeclipse中创建了一个web.xml(利用servelet)文件用于在网页中的Ajax连接一个服务器后台类,并没有引用JDOM,自动可以调用web.xml文件,但是把web.xml放到一个没有在编译环境下的工程中就不能正确引用了,这个时候是要我们重写方法去读取XML文件了,可以这样理解么?问一下,要想做实时网络视频监控系统,实现通过网络远程监控的功能可以用myeclipse开发么?

追答

通过servlet发送请求是,好像是在WEB容器tomcat里面自动检测web.xml文件的,然后根据里见面的配置去调用相应的配置去读取调用相应的方法。对不住哈,web.xml文件自动被调用这块还没了解得那么深哈。
myeclipse就是一个开发工具,java 无论是C/S模式还是B/S模式的开发都可以在面弄。php的话也是可以的,只是要安装一个php开发的插件,其他的开发就不知道了。如果您是用这两种来发的话,myeclipse是可以的。

本回答被提问者和网友采纳
第2个回答  2013-08-15
相似回答