黑马程序员技术交流社区
标题:
Java基础知识的三个经典问答 之十[完]
[打印本页]
作者:
q312092921
时间:
2016-4-1 22:46
标题:
Java基础知识的三个经典问答 之十[完]
之九:
http://bbs.itheima.com/thread-287999-1-1.html
1、xml有哪些解析技术?区别是什么?
有DOM,SAX,STAX等
DOM:处理大型文件是其性能下降的非常厉害,这个问题是由DOM的树结构造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对xml的随机访问,sax:不现于,DOM,SAX是事件驱动型的xml解析方式,他顺序的读取xml文件,不需要自已全部装载正文件,当遇到文档开头,文档结束,或者标签开都与标签结束时,他会触发一个事件,用于通过在其回调事件中写入处理代码来处理xml文件,适合对xml的顺序访问。
Stax:Streaming API for xml(Stax)。
2、jsp中有哪些内置对象?他们的作用是什么?
jsp中共9中内置组件,
request:用户端请求,此请求会包含来自GET/Post请求的参数;
response:网页传回用户端的回应。
pageContext:页面的属性是在这里管理
session:与请求有关的回话期
application :Servlet正在执行的内容
out :用来传递回应的输出
config :servlet的构架部件
page jsp网页本身
exception :针对错误的网页。未捕捉的例外。
3、编程用java解析xml的方式
用sax方式解析xml,xml如下:
< ? xml version=1.0 encoding=gb2312? >
小明
信息学院
6258113
男,1955,博士,94年调入海南大学
事件回调类SAXHandler.java
import java.io.*;
import java.util.Hashtable;
import org.xml.sax.*;
public class SAXHandler extends HandlerBase
{
private Hashtable table = new Hashtable();
private String currentElement = null;
private String currentValue = null;
public void setTable(Hashtable table)
{
this.table = table;
}
public Hashtable getTable()
{
return table;
}
public void startElement(String tag, AttributeList attrs)
throws SAXException
{
currentElement = tag;
}
public void characters(char[] ch, int start, int length)
throws SAXException
{
currentValue = new String(ch, start, length);
}
public void endElement(String name) throws SAXException
{
if (currentElement.equals(name))
table.put(currentElement, currentValue);
}
}
JSP内容显示源码,SaxXml.jsp:
< %@page errorPage=ErrPage.jsp contentType=text/html;charset=GB2312 %> >
< %@page import=java.io.*%>
< %@page import=java.util.Hashtable %>
< %@page import=org.w3c.dom.*% >
< %@page import=org.xml.sax.* %>
< %@page import=javax.xml.parsers.SAXParserFactory %>
< %@page import=javax.xml.parsers.SAXParser %>
< %@page import=SAXHandler %>
< %@
File file = new File(c:\people.xml);
FileReader reader = new FileReader(file);
Parser parser;
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
SAXHandler handler = new SAXHandler();
sp.parse(new InputSource(reader), handler);
Hashtable hashTable = handler.getTable();
out.println( );
out.println(
+ );
out.println(
+ );
out.println(
+ );
out.println(
+ );
out.println(
复制代码
教师信息表
姓名 +
(String)hashTable.get(new String(name)) +
学院 +
(String)hashTable.get(new String(college))+
电话 +
(String)hashTable.get(new String(telephone)) +
备注 +
(String)hashTable.get(new String(notes)) +
);
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2