zoukankan      html  css  js  c++  java
  • Java-Dom4jHelper工具类

    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.OutputStreamWriter;
    import java.net.URL;
    import java.util.Iterator;
    import java.util.List;
    
    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.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    public class Dom4jHelper {
        /**
         *  解析url xml文档
         * @param url
         * @return
         * @throws DocumentException
         */
        public Document parse(URL url) throws DocumentException {
            SAXReader reader = new SAXReader();
            Document document = reader.read(url);
            return document;
        }
        /**
         * 遍历解析文档
         * @param document
         */
        public void treeWalk(Document document) {
            treeWalk( document.getRootElement() );
        }
        /**
         * 遍历解析元素
         * @param element
         */
        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 {
                    // 处理....
                }
            }
        }
    
        /** 
         * 解析文件,获得根元素
         * @param xmlPath
         * @param encoding
         * @return
         * @throws Exception
         */
        public static Element parse(String xmlPath,String encoding)throws Exception{
            //文件是否存在
            File file = new File(xmlPath);
            if(!file.exists()){
                throw new Exception("找不到xml文件:"+xmlPath);
            }
    
            //解析
            SAXReader reader = new SAXReader(false);
            Document doc = reader.read(new FileInputStream(file),encoding);
            Element root = doc.getRootElement();
            return root;
        }
    
        /**
         * 保存文档
         * @param doc
         * @param xmlPath
         * @param encoding
         * @throws Exception
         */
        public static void save(Document doc,String xmlPath,String encoding)throws Exception{
            OutputFormat format=OutputFormat.createPrettyPrint();
            format.setEncoding(encoding);
            XMLWriter writer = new XMLWriter(new OutputStreamWriter(new FileOutputStream(xmlPath),encoding),format);
            writer.write(doc);
            writer.flush();
            writer.close(); 
        }
        /**
         * 修改xml某节点的值
         * @param inputXml 原xml文件
         * @param nodes 要修改的节点
         * @param attributename 属性名称
         * @param value 新值
         * @param outXml 输出文件路径及文件名 如果输出文件为null,则默认为原xml文件
         */
        public static void modifyDocument(File inputXml, String nodes, String attributename, String value, String outXml) {
            try {
                SAXReader saxReader = new SAXReader();
                Document document = saxReader.read(inputXml);
                List list = document.selectNodes(nodes);
                Iterator iter = list.iterator();
                while (iter.hasNext()) {
                    Attribute attribute = (Attribute) iter.next();
                    if (attribute.getName().equals(attributename))
                        attribute.setValue(value);
                }
                XMLWriter output;
                if (outXml != null){ //指定输出文件
                    output = new XMLWriter(new FileWriter(new File(outXml)));
                }else{ //输出文件为原文件
                    output = new XMLWriter(new FileWriter(inputXml));
                }
                output.write(document);
                output.close();
            }
    
            catch (DocumentException e) {
                System.out.println(e.getMessage());
            } catch (IOException e) {
                System.out.println(e.getMessage());
            }
        }   
    
        /**
         * xml转换为字符串
         * @param doc
         * @param encoding
         * @return
         * @throws Exception
         */
        public static String toString(Document doc,String encoding)throws Exception{
            OutputFormat format=OutputFormat.createPrettyPrint();
            format.setEncoding(encoding);
            ByteArrayOutputStream byteOS=new ByteArrayOutputStream();
            XMLWriter writer = new XMLWriter(new OutputStreamWriter(byteOS,encoding),format);
            writer.write(doc);
            writer.flush();
            writer.close();     
            writer=null;
    
            return byteOS.toString(encoding);
        }
        /**
         * 字符串转换为Document
         * @param text
         * @return
         * @throws DocumentException
         */
        public static Document str2Document(String text) throws DocumentException{
            Document document = DocumentHelper.parseText(text);
            return document;
        }
        /**
         * @param args
         */
        public static void main(String[] args) {
            // TODO Auto-generated method stub
    
        }
    
    }
    
  • 相关阅读:
    总结一下vue里一些小技巧
    vue使用过程常见的一些问题
    Vue.js 的几点总结Watchers/router key/render
    Hibernate-3
    Hibernate-2
    Hibernate-1
    百词斩一面9.17
    vivo一面凉经
    中兴技术面被怼面经
    红黑树
  • 原文地址:https://www.cnblogs.com/bilaisheng/p/10210973.html
Copyright © 2011-2022 走看看