• 简单使用dom4j


    package com.dom4j;
    
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.util.Iterator;
    import java.util.List;
    
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerConfigurationException;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.stream.StreamSource;
    
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.dom4j.Element;
    import org.dom4j.Node;
    import org.dom4j.io.DocumentResult;
    import org.dom4j.io.DocumentSource;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    public class Test1 {
        public static void main(String[] args){
            //C:/Users/Administrator.PMIMP83HWNIKWOV/Workspaces/MyEclipse 9/TestWeb/WebRoot/
            /**
             * 我使用绝对路径就会报错unknown protocol: c,不知道什么原因,现在使用的是相对路径,如果不好使用相对路径,直接使用File文件吧
             */
            //String uri="WebRoot/xml/languages.xml";
            //Document doc=praseXmlToDocument(uri);
            //System.out.println(doc.getRootElement().getName());
            //Iteratorasdom(doc);
            //navigation(doc);
            //treeWalk(doc);
            //Document doc=createDocument();
            //DocmentToFile(doc,"");
            StringToDoc();
            
        }
        
        public static Document praseXmlToDocument(String url){
            /**
             * 解析xml文件成document对象
             */
            Document document=null;
            try {
                SAXReader reader=new SAXReader();
                
                document = reader.read(url);
            } catch (DocumentException e) {
                e.printStackTrace();
            }
            return document;
        }
        
        public static void Iteratorasdom(Document document){
            /**
             * document获取根元素: .getRootElement()
             * Node类型获取所有字节点的迭代器 .elementIterator()
             * 获取指定名称的所有子节点的迭代器  .elementIterator(String name)
             * 获取所有属性的迭代器 .attributeIterator()
             */
            Element root=document.getRootElement();
            /*for(Iterator i=root.elementIterator();i.hasNext();){
                Element element=(Element) i.next();
                System.out.println(element.getName());
                for(Iterator it=element.attributeIterator();it.hasNext();){
                    Attribute att=(Attribute) it.next();
                    System.out.println(att.getName()+"="+att.getStringValue());
                }
            }*/
            for(Iterator i=root.elementIterator("lan");i.hasNext();){
                Element element=(Element) i.next();
                for(Iterator it=element.attributeIterator();it.hasNext();){
                    Attribute att=(Attribute) it.next();
                    System.out.println(att.getName()+"="+att.getStringValue());
                }
            }
        }
        
        public static void navigation(Document document){
            /* 使用selectNodes需要使用jaxen.jar
             * .selectNodes("//languages/lan/name");获取所有指定名称节点的集合
             * .selectSingleNode("//languages/lan/name"); 获取第一个指定名称的节点
             * node和document对象都有这个方法
             * */
            /*List list=document.selectNodes("//languages/lan/name");
            for(int i=0;i<list.size();i++){
                Node node=(Node) list.get(i);
                System.out.println(node.getText());
            }*/
            Node node=document.selectSingleNode("//languages/lan/name");
            System.out.println(node.getText());
        }
        
        /*遍历document或者element元素的方法*/
        
        public static void treeWalk(Document document) {
                treeWalk( document.getRootElement() );
            }
    
         public static 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 
                    {
                        System.out.println(node.getText());
                    }
                }
        }
         
        public static Document createDocument(){
            /**
             * 添加子元素.addElement(String name)
             * 添加属性 .addAttribute(key,value)
             * 添加值 .addText(String value)
             */
            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 Mchirter");
            
            return document;
        }
        
        public static void DocmentToFile(Document doc,String uri){
            /* 第一种方法,使用XMLWriter对象的writer方法*/
            XMLWriter writer = null;
            /*try {
                writer=new XMLWriter(new FileWriter(uri));
                writer.write(doc);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }*/
            
            /*
             * 输出到控制台
             * */
            OutputFormat format=OutputFormat.createPrettyPrint();
            try {
                writer=new XMLWriter(System.out,format);
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                writer.write(doc);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
        }
        
        public static void StringToDoc(){
            /* 将docment对象转换称为xml */
            /*Document doc=createDocument();
            String text=doc.asXML();
            System.out.println(text);*/
            /* 将text对象转换称为document*/
            String text="<a><b>1</b><b>2</b><b>3</b></a>";
            try {
                Document document=DocumentHelper.parseText(text);
                treeWalk(document);
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        public static Document a(Document doc,String stylesheet) throws IOException{
            TransformerFactory factory=TransformerFactory.newInstance();
            Transformer transformer = null;
            try {
                transformer=factory.newTransformer(new StreamSource(stylesheet));
            } catch (TransformerConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
            DocumentSource source=new DocumentSource(doc);
            DocumentResult result=new DocumentResult();
            try {
                transformer.transform( source, result );
            } catch (TransformerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Document transformedDoc = result.getDocument();
            XMLWriter writer = null;
            
                writer=new XMLWriter(new FileWriter("doc.doc"));
                writer.write(transformedDoc);
            
            
            return transformedDoc;
        }
    
    }
  • 相关阅读:
    用面向对象的方法重写选项卡
    js 深入理解原型模式
    ECMAScript中的两种属性
    引用类型
    js 变量、作用域和内存问题
    html5 canvas画布尺寸与显示尺寸
    网页画板制作
    了解数组中的队列方法,DOM中节点的一些操作
    JavaScript中的数组对象遍历、读写、排序等操作
    this在方法赋值过程中无法保持(隐式丢失)
  • 原文地址:https://www.cnblogs.com/aigeileshei/p/5505217.html
Copyright © 2020-2023  润新知