<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    zhyiwww
    用平實的筆,記錄編程路上的點點滴滴………
    posts - 536,comments - 394,trackbacks - 0


    dom4j(Version 1.6.1)快速入門
    ?

    Parsing XML

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

    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)

    我們可以通過多種方法來操作XML文檔,這些方法返回java里標準的迭代器(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
    }
    }

    強大的XPath導航

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

    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" );
    }

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

    public void findLinks(Document document) throws DocumentException {

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

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

    如果你需要關(guān)于XPath語言的任何幫助,我們強烈推薦這個站點Zvon tutorial他會通過一個一個的例子引導你學習。

    快速遍歷(Fast Looping)


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

    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....
    }
    }
    }

    生成一個新的XML文檔對象

    在dom4j中你可能常常希望用程序生成一個XML文檔對象,下面的程序為你進行了示范:

    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;
    }
    }

    將一個文檔對象寫入文件中

    將一個文檔對象寫入Writer對象的一個簡單快速的途徑是通過write()方法。

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

    如果你想改變輸出文件的排版格式,比如你想要一個漂亮的格式或者是一個緊湊的格式,或者你想用Writer 對象或者OutputStream 對象來操作,那么你可以使用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對象
    OutputFormat format = OutputFormat.createPrettyPrint();
    writer = new XMLWriter( System.out, format );
    writer.write( document );

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

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

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

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

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

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

    通過XSLT樣式化文檔(Document)


    使用Sun公司提供的JAXP API將XSLT 應用到文檔(Document)上是很簡單的。它允許你使用任何的XSLT引擎(例如:Xalan或SAXON等)來開發(fā)。下面是一個使用JAXP創(chuàng)建一個轉(zhuǎn)化器(transformer),然后將它應用到文檔(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)在來樣式化一個文檔(Document)
    DocumentSource source = new DocumentSource( document );
    DocumentResult result = new DocumentResult();
    transformer.transform( source, result );

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

    原文地址
    dom4j下載地址

    初次嘗試翻譯,如果有翻譯不妥的地方,希望大家指出來,我們共同進步!
    謝謝??!



    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請注明來源 http://m.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2006-07-11 17:20 zhyiwww 閱讀(624) 評論(0)  編輯  收藏 所屬分類: j2ee
    主站蜘蛛池模板: 中国在线观看免费的www| 免费看搞黄视频网站| 日韩久久无码免费毛片软件| **毛片免费观看久久精品| 亚洲一区中文字幕在线电影网| 三级毛片在线免费观看| 亚洲成人免费在线| 成人免费视频试看120秒| 国产免费播放一区二区| 亚洲系列国产精品制服丝袜第| 国产在线19禁免费观看国产 | 在线亚洲高清揄拍自拍一品区| 丝瓜app免费下载网址进入ios| www.亚洲精品| 久久91亚洲精品中文字幕| 中文字幕乱理片免费完整的| 亚洲综合在线成人一区| 日韩插啊免费视频在线观看| 亚洲av日韩专区在线观看| 永久黄网站色视频免费观看| 亚洲最大福利视频| 亚洲国产另类久久久精品小说| 最近最新的免费中文字幕| 国内精品久久久久影院免费| MM1313亚洲精品无码久久| 亚洲视频在线观看网址| JLZZJLZZ亚洲乱熟无码| 成人男女网18免费视频| 狠狠色伊人亚洲综合网站色| 亚洲国产精品无码久久久不卡| 国产精品免费看香蕉| 一个人看的www视频免费在线观看| 亚洲一区二区三区四区视频| 卡一卡二卡三在线入口免费| 花蝴蝶免费视频在线观看高清版 | 成人在线免费看片| 欧洲 亚洲 国产图片综合| 亚洲国产精品无码久久SM| 亚洲欧洲一区二区三区| 久久久久国产精品免费看| 免费看一级高潮毛片|