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

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

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

    統計

    留言簿(1)

    DB

    Others

    QA

    Tech Website

    閱讀排行榜

    評論排行榜

    Dom4j解釋XML示例

    #XML總結

     

    Parsing XML

    One of the first things you'll probably want to do is to parse an XML document of some kind. This is easy to do in dom4j. The following code demonstrates how to this.

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

    Using Iterators

    A document can be navigated using a variety of methods that return standard Java Iterators. For example

        public void bar(Document document) throws DocumentException {
    
            Element root = document.getRootElement();
    
            // iterate through child elements of root
            for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
                Element element = (Element) i.next();
                // do something
            }
    
            // iterate through child elements of root with element name "foo"
            for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {
                Element foo = (Element) i.next();
                // do something
            }
    
            // iterate through attributes of root 
            for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
                Attribute attribute = (Attribute) i.next();
                // do something
            }
         }
    

    Powerful Navigation with XPath

    In dom4j XPath expressions can be evaluated on the Document or on any Node in the tree (such as Attribute, Element or ProcessingInstruction). This allows complex navigation throughout the document with a single line of code. For example.

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

    For example if you wish to find all the hypertext links in an XHTML document the following code would do the trick.

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

    If you need any help learning the XPath language we highly recommend the Zvon tutorial which allows you to learn by example.

    Fast Looping

    If you ever have to walk a large XML document tree then for performance we recommend you use the fast looping method which avoids the cost of creating an Iterator object for each loop. For example

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

    Creating a new XML document

    Often in dom4j you will need to create a new document from scratch. Here's an example of doing that.

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

    Writing a document to a file

    A quick and easy way to write a Document (or any Node) to a Writer is via the write() method.

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

    If you want to be able to change the format of the output, such as pretty printing or a compact format, or you want to be able to work with Writer objects or OutputStream objects as the destination, then you can use the XMLWriter class.

    import org.dom4j.Document;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.XMLWriter;
    
    public class Foo {
    
        public void write(Document document) throws IOException {
    
            // lets write to a file
            XMLWriter writer = new XMLWriter(
                new FileWriter( "output.xml" )
            );
            writer.write( document );
            writer.close();
    
    
            // Pretty print the document to System.out
            OutputFormat format = OutputFormat.createPrettyPrint();
            writer = new XMLWriter( System.out, format );
            writer.write( document );
    
            // Compact format to System.out
            format = OutputFormat.createCompactFormat();
            writer = new XMLWriter( System.out, format );
            writer.write( document );
        }
    }
    

    Converting to and from Strings

    If you have a reference to a Document or any other Node such as an Attribute or Element, you can turn it into the default XML text via the asXML() method.

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

    If you have some XML as a String you can parse it back into a Document again using the helper method DocumentHelper.parseText()

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

    Styling a Document with XSLT

    Applying XSLT on a Document is quite straightforward using the JAXP API from Sun. This allows you to work against any XSLT engine such as Xalan or SAXON. Here is an example of using JAXP to create a transformer and then applying it to a 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 {
    
            // load the transformer using JAXP
            TransformerFactory factory = TransformerFactory.newInstance();
            Transformer transformer = factory.newTransformer( 
                new StreamSource( stylesheet ) 
            );
    
            // now lets style the given document
            DocumentSource source = new DocumentSource( document );
            DocumentResult result = new DocumentResult();
            transformer.transform( source, result );
    
            // return the transformed document
            Document transformedDoc = result.getDocument();
            return transformedDoc;
        }
    }
    
    轉自:http://dom4j.sourceforge.net/dom4j-1.6.1/guide.html

    posted on 2011-06-15 17:53 XXXXXX 閱讀(366) 評論(0)  編輯  收藏 所屬分類: Programing

    主站蜘蛛池模板: 亚洲av综合色区| 亚洲AV成人一区二区三区观看| 欧美在线看片A免费观看| WWW亚洲色大成网络.COM| 国产亚洲自拍一区| 久久免费视频99| 国产精品观看在线亚洲人成网| 亚洲综合另类小说色区| 欧美在线看片A免费观看| jizz中国免费| 亚洲AV无码专区在线亚| 亚洲人成网站在线观看播放| 岛国av无码免费无禁网站| 和老外3p爽粗大免费视频| 自拍日韩亚洲一区在线| 亚洲精品一品区二品区三品区| 无码一区二区三区AV免费| 韩国免费A级毛片久久| 亚洲一区二区三区高清在线观看| 久久久久亚洲AV无码专区桃色| 成人免费在线看片| 中文字字幕在线高清免费电影| 亚洲欧美第一成人网站7777| 久久精品国产亚洲| 免费少妇a级毛片人成网| 国产桃色在线成免费视频 | 理论片在线观看免费| 亚洲毛片一级带毛片基地| 久久精品国产精品亚洲人人| 好先生在线观看免费播放| 日本免费一区二区三区| 一区二区视频免费观看| 亚洲欧洲无卡二区视頻| 亚洲视频一区二区在线观看| 综合亚洲伊人午夜网 | 美女又黄又免费的视频| 2017亚洲男人天堂一| 亚洲视频免费一区| 国产aⅴ无码专区亚洲av| 一本久到久久亚洲综合| 免费视频中文字幕|