国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
dom4j(Version 1.6.1)快速入門

dom4j(Version 1.6.1)快速入門

Parsing XML

或許你想要做的第一件事情就是解析一個(gè)某種類型的XML文檔,用dom4j很容易做到。請(qǐng)看下面的示范代碼:

import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class Foo {

public Document parse(URL url) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(url);
return document;
}
}

使用迭代器(Iterators)

我們可以通過多種方法來(lái)操作XML文檔,這些方法返回java里標(biāo)準(zhǔn)的迭代器(Iterators)。例如:

public void bar(Document document) throws DocumentException {
Element root = document.getRootElement();
//迭代根元素下面的所有子元素
for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
//處理代碼
}

//迭代根元素下面名稱為"foo"的子元素
for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {
Element foo = (Element) i.next();
//處理代碼
}

// 迭代根元素的屬性attributes)元素
for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
Attribute attribute = (Attribute) i.next();
// do something
}
}

強(qiáng)大的XPath導(dǎo)航

在dom4j中XPath可以表示出在XML樹狀結(jié)構(gòu)中的Document或者任意的節(jié)點(diǎn)(Node)(例如:Attribute,Element 或者 ProcessingInstruction等)。它可以使在文檔中復(fù)雜的操作僅通過一行代碼就可以完成。例如:

public void bar(Document document) {
List list = document.selectNodes( "http://foo/bar" );

Node node = document.selectSingleNode( "http://foo/bar/author" );

String name = node.valueOf( "@name" );
}

如果你想得到一個(gè)XHTML文檔中的所有超文本鏈接(hypertext links)你可以使用下面的代碼:

public void findLinks(Document document) throws DocumentException {

List list = document.selectNodes( "http://a/@href" );

for (Iterator iter = list.iterator(); iter.hasNext(); ) {
Attribute attribute = (Attribute) iter.next();
String url = attribute.getValue();
}
}

如果你需要關(guān)于XPath語(yǔ)言的任何幫助,我們強(qiáng)烈推薦這個(gè)站點(diǎn)Zvon tutorial他會(huì)通過一個(gè)一個(gè)的例子引導(dǎo)你學(xué)習(xí)。

快速遍歷(Fast Looping)


如果你不得不遍歷一個(gè)非常大的XML文檔,然后才去執(zhí)行,我們建議你使用快速遍歷方法(fast looping method),它可以避免為每一個(gè)循環(huán)的節(jié)點(diǎn)創(chuàng)建一個(gè)迭代器對(duì)象,如下所示:

public void treeWalk(Document document) {
treeWalk( document.getRootElement() );
}

public void treeWalk(Element element) {
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
treeWalk( (Element) node );
}
else {
// do something....
}
}
}

生成一個(gè)新的XML文檔對(duì)象

在dom4j中你可能常常希望用程序生成一個(gè)XML文檔對(duì)象,下面的程序?yàn)槟氵M(jìn)行了示范:

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

public class Foo {

public Document createDocument() {
Document document = DocumentHelper.createDocument();
Element root = document.addElement( "root" );

Element author1 = root.addElement( "author" )
.addAttribute( "name", "James" )
.addAttribute( "location", "UK" )
.addText( "James Strachan" );

Element author2 = root.addElement( "author" )
.addAttribute( "name", "Bob" )
.addAttribute( "location", "US" )
.addText( "Bob McWhirter" );

return document;
}
}

將一個(gè)文檔對(duì)象寫入文件中

將一個(gè)文檔對(duì)象寫入Writer對(duì)象的一個(gè)簡(jiǎn)單快速的途徑是通過write()方法。

FileWriter out = new FileWriter( "foo.xml" );
document.write( out );

如果你想改變輸出文件的排版格式,比如你想要一個(gè)漂亮的格式或者是一個(gè)緊湊的格式,或者你想用Writer 對(duì)象或者OutputStream 對(duì)象來(lái)操作,那么你可以使用XMLWriter 類。

import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

public class Foo {

public void write(Document document) throws IOException {

// 寫入文件
XMLWriter writer = new XMLWriter(
new FileWriter( "output.xml" )
);
writer.write( document );
writer.close();


// 以一種優(yōu)雅的格式寫入System.out對(duì)象
OutputFormat format = OutputFormat.createPrettyPrint();
writer = new XMLWriter( System.out, format );
writer.write( document );

// 以一種緊湊的格式寫入System.out對(duì)象
format = OutputFormat.createCompactFormat();
writer = new XMLWriter( System.out, format );
writer.write( document );
}
}

轉(zhuǎn)化為字符串,或者從字符串轉(zhuǎn)化

如果你有一個(gè)文檔(Document)對(duì)象或者任何一個(gè)節(jié)點(diǎn)(Node)對(duì)象的引用(reference),象屬性(Attribute)或者元素(Element),你可以通過asXML()方法把它轉(zhuǎn)化為一個(gè)默認(rèn)的XML字符串:

Document document = ...;
String text = document.asXML();

如果你有一些XML內(nèi)容的字符串表示,你可以通過DocumentHelper.parseText()方法將它重新轉(zhuǎn)化為文檔(Document)對(duì)象:

String text = " James ";
Document document = DocumentHelper.parseText(text);

通過XSLT樣式化文檔(Document)


使用Sun公司提供的JAXP API將XSLT 應(yīng)用到文檔(Document)上是很簡(jiǎn)單的。它允許你使用任何的XSLT引擎(例如:Xalan或SAXON等)來(lái)開發(fā)。下面是一個(gè)使用JAXP創(chuàng)建一個(gè)轉(zhuǎn)化器(transformer),然后將它應(yīng)用到文檔(Document)上的例子:

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;

import org.dom4j.Document;
import org.dom4j.io.DocumentResult;
import org.dom4j.io.DocumentSource;

public class Foo {

public Document styleDocument(
Document document,
String stylesheet
) throws Exception {

// 使用 JAXP 加載轉(zhuǎn)化器
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(
new StreamSource( stylesheet )
);

// 現(xiàn)在來(lái)樣式化一個(gè)文檔(Document)
DocumentSource source = new DocumentSource( document );
DocumentResult result = new DocumentResult();
transformer.transform( source, result );

// 返回經(jīng)過樣式化的文檔(Document)
Document transformedDoc = result.getDocument();
return transformedDoc;
}
}

原文地址
dom4j下載地址

初次嘗試翻譯,如果有翻譯不妥的地方,希望大家指出來(lái),我們共同進(jìn)步!
謝謝??!
[:)]

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
dom4j讀取某個(gè)元素的某個(gè)屬性
Java dom4j 解析xml文檔
Java XML解析工具 dom4j介紹及使用實(shí)例
Java程序員從笨鳥到菜鳥之(二十七)XML之Jdom和DOM4J解析
Dom4j的使用(全而好的文章) - xhy0422 - JavaEye技術(shù)網(wǎng)站
jdom
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服