溫馨蟲窩
給自己一個(gè)溫馨的家
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
2 Posts :: 4 Stories :: 2 Comments :: 0 Trackbacks
公告
站長: 仙人掌
QQ:2180322
MSN:
訪問量:
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
留言簿
給我留言
查看公開留言
查看私人留言
隨筆分類
往事如風(fēng)(2)
隨筆檔案
2005年2月 (2)
文章分類
C#
Hibernate
J2EE
Oracle
Others(1)
Spring
XML(3)
文章檔案
2005年3月 (4)
相冊
不當(dāng)帥哥好多年
搜索
最新評論
1.?re: 童年
呵呵,說起那個(gè)唐老師,我也想起來了,聲音很粗的,她女兒后來去華東師范大學(xué)了...
--海哥
2.?re: 童年
呵呵,說起那個(gè)唐老師,我也想起來了,聲音很粗的,她女兒后來去華東師范大學(xué)了...
--海哥
閱讀排行榜
1.?童年(248)
2.?Blog開篇(214)
評論排行榜
1.?童年(2)
2.?Blog開篇(0)
(轉(zhuǎn))從 DOM 轉(zhuǎn)換
在本文中,您會了解如何將 DOM 結(jié)構(gòu)轉(zhuǎn)換成 SAX 和 JDOM,從而可以與不使用 DOM 的應(yīng)用程序通信。本文列出的代碼演示了如何從 DOM 轉(zhuǎn)換到供 SAX 使用的輸出流,以及如何從 DOM 到 JDOM 的轉(zhuǎn)換。
如果您對 W3C 的 DOM(文檔對象模型)感興趣而且認(rèn)為 SAX 很靈巧的話,那么您必須找出一種方法將 DOM 轉(zhuǎn)換成應(yīng)用程序開發(fā)人員使用的其它格式。當(dāng)然,這些其它格式是指 SAX 和 JDOM。如果必須將 DOM 作為輸入且要將它轉(zhuǎn)換成其它格式時(shí),要做什么?這當(dāng)然是一個(gè)值得研究的問題。由于 DOM 提供了完整的文檔表示,將它轉(zhuǎn)換成另外一種格式當(dāng)然是可行的。在本文中,您將了解如何執(zhí)行從 DOM 到 SAX 或 JDOM 的轉(zhuǎn)換。
從 DOM 到 SAX
遺憾的是,DOM 級別 1 和更新的級別 2 沒有提供將 DOM 樹輸出成 SAX 或其它格式的方式。結(jié)果是每個(gè)語法分析器實(shí)現(xiàn)都提供了一組用于輸出的定制 API,實(shí)現(xiàn)的獨(dú)立性喪失了。換句話說,您的代碼只能與那個(gè)為它編寫的語法分析器一起工作(如 Crimson、Xerces 或 Oracle 等等)。DOM 級別 3 被認(rèn)為是提供了這項(xiàng)功能,所以我們都必須靜觀 DOM 級別 3 能提供什么輸出方法。同時(shí),查看一下供應(yīng)商提供的有關(guān)編寫或串行化 DOM 樹的文檔。例如使用 Apache Xerces,需要使用如清單 1 中所示的 org.apache.xml.serialize.XMLSerializer 類。 在每一種情形,您將有可能必須以流的形式輸出 DOM 樹,然后將這個(gè)流交給 SAX 進(jìn)行后續(xù)處理。請注意,清單 1 中僅顯示了以流的形式輸出 DOM 樹;然后可以使用這個(gè)流作為 SAX 處理器的輸入。
清單 1. 將 DOM 轉(zhuǎn)換成輸出流(供 SAX 使用)
import org.apache.xerces.parsers.DOMParser;
import org.apache.xml.serialize.XMLSerializer;
import org.xml.sax.InputSource;
import org.w3c.dom.Document;
public class PrintDOMTree {
public static void main(String[] args) {
try {
InputSource source = new InputSource(args[0]);
DOMParser parser = new DOMParser();
parser.parse(source);
Document doc = parser.getDocument();
XMLSerializer serializer = new XMLSerializer();
// Insert your PipedOutputStream here instead of System.out!
serializer.setOutputByteStream(System.out);
serializer.serialize(doc);
} catch (Exception e) {
e.printStackTrace();
}
}
}
從 DOM 到 JDOM
將 DOM 轉(zhuǎn)換成 JDOM 要比將 DOM 轉(zhuǎn)換成 SAX 簡單。這事實(shí)上很有意義,因?yàn)槟坏┯辛?DOM 樹,就有可能有機(jī)會從 SAX 處理數(shù)據(jù)。事實(shí)上,很少有 SAX 最優(yōu)處理 DOM 樹的情況,因?yàn)槟ㄟ^ DOM 表示來將 XML 存儲在內(nèi)存里時(shí),已經(jīng)用盡了內(nèi)存。更為常見的工作是把作為 DOM 樹的 XML 文檔轉(zhuǎn)換成 JDOM 樹。由于這些格式都是文檔表示,但在行為和功能性方面有潛在的不同,所以您可能想讓其他人用您的 DOM 樹并將它當(dāng)作 JDOM 進(jìn)行處理。您可能認(rèn)為這是他們的工作,但您需要知道(至少!)如何從您的結(jié)構(gòu)轉(zhuǎn)換成他們的結(jié)構(gòu)。
對于將 DOM 轉(zhuǎn)換成 JDOM,JDOM API 向用戶提供了 DOM Node,稱為 org.jdom.input.DOMBuilder。這個(gè)類接受 DOM Document(以及其它一些 DOM 結(jié)構(gòu),如 Element 和 Attr),并將 DOM 樹轉(zhuǎn)換成 JDOM Document。這個(gè)操作并不復(fù)雜,所以我在清單 2 中簡單地顯示了該代碼,讓您了解一下實(shí)際過程。
清單 2. 將 DOM 轉(zhuǎn)換成 JDOM
//
Java imports
import java.io.IOException;
//
JDOM imports
import org.jdom.JDOMException;
import org.jdom.input.DOMBuilder;
import org.jdom.output.XMLOutputter;
//
SAX and DOM
import org.xml.sax.InputSource;
//
Xerces
import org.apache.xerces.parsers.DOMParser;
public
class
DOMtoJDOM
{
//
DOM tree of input document
org.w3c.dom.Document domDoc;
public
DOMtoJDOM(String systemID) throws Exception
{
DOMParser parser
=
new
DOMParser();
parser.parse(
new
InputSource(systemID));
domDoc
=
parser.getDocument();
}
public
org.jdom.Document convert()
throws JDOMException, IOException
{
//
Create new DOMBuilder, using default parser
DOMBuilder builder
=
new
DOMBuilder();
org.jdom.Document jdomDoc
=
builder.build(domDoc);
return
jdomDoc;
}
public
static
void
main(String[] args)
{
try
{
DOMtoJDOM tester
=
new
DOMtoJDOM(args[
0
]);
org.jdom.Document jdomDoc
=
tester.convert();
//
Output the document to System.out
XMLOutputter outputter
=
new
XMLOutputter();
outputter.output(jdomDoc, System.
out
);
}
catch
(Exception e)
{
e.printStackTrace();
}
}
}
沒有別的要說了。一旦您知道如何從 DOM 移向 SAX 和 JDOM 之后,就可以解決任何您需要的輸出格式并且能夠處理您將遇到的許多類型的 XML 表示。靜待 DOM 級別 3 規(guī)范,以了解對于以標(biāo)準(zhǔn)的且與供應(yīng)商無關(guān)的方式輸出 DOM 樹的更改,到那時(shí),您就可以盡情使用 DOM 了!
posted on 2005-03-01 14:45
溫馨蟲窩
閱讀(177)
評論(0)
編輯
收藏
所屬分類:
XML
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
相關(guān)文章:
(轉(zhuǎn)自IBM)用 JDOM 簡化 XML 編程
(轉(zhuǎn))從 DOM 轉(zhuǎn)換
(轉(zhuǎn))Java語言編程中更新XML文檔的常用方法
Powered by:
BlogJava
Copyright © 溫馨蟲窩
主站蜘蛛池模板:
亚洲电影日韩精品
|
亚洲精品免费观看
|
在线精品免费视频无码的
|
亚洲精品视频免费看
|
亚洲精品视频在线观看免费
|
亚洲国产精品久久久久婷婷软件
|
精品亚洲aⅴ在线观看
|
中文字幕av免费专区
|
亚洲AV无码久久精品狠狠爱浪潮
|
中国一级毛片免费看视频
|
亚洲AV无码一区二区乱孑伦AS
|
久久这里只精品国产免费10
|
亚洲欧洲∨国产一区二区三区
|
japanese色国产在线看免费
|
亚洲天堂中文字幕在线
|
97在线免费观看视频
|
亚洲av无码国产精品夜色午夜
|
无码av免费一区二区三区试看
|
中文字幕亚洲综合精品一区
|
久久受www免费人成_看片中文
|
亚洲a∨无码一区二区
|
亚洲一区二区三区国产精品
|
中国国语毛片免费观看视频
|
亚洲国产人成在线观看69网站
|
99国产精品永久免费视频
|
亚洲а∨天堂久久精品9966
|
免费一看一级毛片全播放
|
A级毛片高清免费视频在线播放
|
亚洲乱码国产乱码精品精
|
99热这里只有精品免费播放
|
中文字幕 亚洲 有码 在线
|
国产精品免费视频播放器
|
国产免费人成视频尤勿视频
|
亚洲精品国产成人专区
|
免费无码黄动漫在线观看
|
夜夜爽妓女8888视频免费观看
|
亚洲综合图色40p
|
国内免费高清在线观看
|
国产精品黄页免费高清在线观看
|
亚洲人成网站在线观看播放青青
|
国产jizzjizz视频免费看
|