`

XSLT dom4j Parsing XML xml 创建与解析

 
阅读更多

       最近设计一个数据同步操作!将data 封装为xml ,然后发送给webservices 进行解析! xml 的常用代码如下!

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导航
    
dom4jXPath可以表示出在XML树状结构中的Document或者任意的节点(Node)(例如:AttributeElement 或者ProcessingInstruction等)。它可以使在文档中复杂的操作仅通过一行代码就可以完成。例如:

public void bar(Document document) {
        List list = document.selectNodes( "//foo/bar" );
        Node node = document.selectSingleNode( "//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();
        }
    }
    
如果你需要关于XPath语言的任何帮助,我们强烈推荐这个站点Zvon tutorial他会通过一个一个的例子引导你学习。

快速遍历(Fast Looping
如果你不得不遍历一个非常大的XML文档,然后才去执行,我们建议你使用快速遍历方法(fast looping method),它可以避免为每一个循环的节点创建一个迭代器对象,如下所示:

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();


        // 
以一种优雅的格式写入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 );
    }
}

转化为字符串,或者从字符串转化
    
如果你有一个文档(Document)对象或者任何一个节点(Node)对象的引用(reference),象属性(Attribute)或者元素(Element),你可以通过asXML()方法把它转化为一个默认的XML字符串:

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

如果你有一些XML内容的字符串表示,你可以通过DocumentHelper.parseText()方法将它重新转化为文档(Document)对象:

        String text = "<person> <name>James</name> </person>";
        Document document = DocumentHelper.parseText(text);

通过XSLT样式化文档(Document

    使用Sun公司提供的JAXP APIXSLT 应用到文档(Document)上是很简单的。它允许你使用任何的XSLT引擎(例如:XalanSAXON等)来开发。下面是一个使用JAXP创建一个转化器(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 加载转化器
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer( 
            new StreamSource( stylesheet ) 
        );

        // 
现在来样式化一个文档(Document
        DocumentSource source = new DocumentSource( document );
        DocumentResult result = new DocumentResult();
        transformer.transform( source, result );

        // 
返回经过样式化的文档(Document
        Document transformedDoc = result.getDocument();
        return transformedDoc;
    }
}

 

分享到:
评论

相关推荐

    dom4j---xml解析jar包

    dom4j是一个简单的开源库,用于处理XML、 XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP。

    开源XML解析包dom4j

    DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections ...

    dom4j api 参考手册

    org.dom4j.rule A Pattern based XML rule engine which implements the full XSLT processing model while allowing any Action to be fired if a pattern matches. org.dom4j.rule.pattern org.dom4j.swing A ...

    Dom4j_使用简介

    Dom4j_使用简介DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java ...

    dom4j插件 用于XML

    dom4j插件 用于XML Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。(Hibernate用此项目来解析hbm映射文件)

    dom4j,最新版本2.1.3

    Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。解析xml的dom4j,最新版本2.1.3。各大开源软软件使用最广泛

    Dom4j是一个易用的、开源的库

    DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections ...

    XML解析-dom4j.jar-jdom.jar

    Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。

    Dom4j 使用指南

    DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections ...

    Android 创建与解析XML(五)——详解Dom4j方式

    dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP. dom4j官方网址:...

    DOM4J使用简介(很实用)

    DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections ...

    dom4j-1.6.1.jar jar包

    dom4j是一个非常非常优秀的JavaXML API 越来越多的Java软件都在使用dom4j来读写XML Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP DOM4J使用...

    xslt与xpath入门转换xml文档与数据

    xml的关键技术。xpath的常用属性。以及xslt与xpath入门转换xml文档与数据

    xml基础(dtd约束模式,schema约束模式,xslt样式,sax解析,dom解析,jom解析)

    本资料含有以下内容:xml基础 dtd约束模式 schema约束模式 xslt样式 sax解析 dom解析 jom解析

    XSLT与XPath入门转换XML文档与数据

    中文名: XSLT与XPath入门:转换XML文档与数据 原名: Beginning XSLT and XPath: Transforming XML Documents and Data 作者: Ian Williams资源格式: PDF 版本: 文字版 出版社: Wrox书号: 0470477253发行时间: 2009年...

    dom4j的jar包以及说明文档

    dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.

    DIXML v5.9.0 for D6-XE10.1 XML XSLT EXSLT 解析

    DIXml is an embedded XML, XSLT, and EXSLT processing library for Delphi (Embarcadero / CodeGear / Borland). It is build on the libxml2, libxslt and libexslt libraries but requires no DLLs nor other ...

    中文 DOM4j入门例子.txt

    中文 DOM4j入门例子 一。解析XML 二。使用迭代器: 三。强大的导航使用XPath: 四。快速循环 五。创建一个新的XML文档 六。记录到一个文件中的一个文件, 七。转换为字符串 八。用XSLT样式文档

    《XSLT与XPath入门:转换XML文档与数据》 [PDF]

    XML内容管理应用程序的增长刺激了对XSLT和Xpath技能的要求.本入门教程提供了XSLT处理模型的基础,为开发者提供了重要的基本功. XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。  XPath 是一种...

    java dom4j 简单示例

    使用java编写,spring框架,读取数据库中内容使用dom4j包生成XML文档,并包括一个Transformer使用Xslt转换xml的示例

Global site tag (gtag.js) - Google Analytics