?? 0803-0207.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0803-0207 -->
<HTML><HEAD><TITLE>XML中國論壇 - 初學進階 - 8.3.2.7 處理文檔事件</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"
}
.pt9 {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"
}
.pt10 {
FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋體"
}
.TempOutline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.TempOutline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage0 {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage111 {
FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
</STYLE>
<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0
onload=""><!-- 以下為主體內容 -->
<div align="center">
<center>
<TABLE width="100%" border=0 style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<TBODY>
<TR vAlign=top>
<TD width=36 rowSpan=2></TD>
<TD vAlign=center>
<p align="center"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=36 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD ><!-- 正文內容 -->
<DIV class=pt10><B>8.3.2.7 處理文檔事件</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>在"實現DocumentHandler接口"一節中,我們定義了五個文檔事件處理方法的框架,現在,我們來實現框架中的實際內容,如下所示:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">public void startDocument ()<BR>throws SAXException
{<BR><STRONG>emit ("<?xml version= 1.0 encoding= gb2312
?>");<BR>nl();<BR></STRONG>}<BR><BR>public void endDocument
()<BR>throws SAXException {<BR><STRONG>try {<BR>
nl();<BR> out.flush ();<BR>} catch (IOException e) {<BR>
throw new SAXException ("I/O error", e); <BR>}
</STRONG><BR>}</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>在上面代碼中,當分析器遇到文檔的起始部分時,就輸出XML文檔聲明語句。當分析器分析到文檔的結束時,簡單地輸出一個換行,并把輸出流中的內容全部輸出。就文檔開始與結束而言,不需要再做其他的工作。而對于元素起始與結束,所做的工作如下面代碼中的黑體部分所示:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">public void startElement (String name,
AttributeList attrs)<BR>throws SAXException {<BR><STRONG>emit
("<"+name);<BR>if (attrs != null) {<BR> for (int i = 0; i
< attrs.getLength (); i++) {<BR> emit ("
");<BR> emit (attrs.getName(i)+"=\""+attrs.getValue
(i)+"\"");<BR> }<BR>}<BR>emit
(">");</STRONG><BR>}<BR><BR>public void endElement (String
name)<BR>throws SAXException {<BR><STRONG>emit
("</"+name+">");</STRONG><BR>}</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>通過上面的代碼,可以輸出所遇到的元素名稱以及元素的所有屬性。現在,只剩下XML文檔中的文本內容沒有輸出了。下面代碼則是characters方法的實現:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">public void characters (char buf [], int offset,
int len)<BR>throws SAXException {<BR><STRONG>String s = new
String(buf, offset, len);<BR>emit
(s);</STRONG><BR>}</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>到目前為止,我們已經寫完了利用SAX分析器的一個應用程序Echo.java,接下來就是編譯并執行該應用程序了。<BR></P></DIV>
<P></P>
<P></P></TD></TR></TBODY></TABLE>
</center>
</div>
<P></P>
<P>
<P></P></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -