zoukankan      html  css  js  c++  java
  • w3c document 与 dom4j document转化工具类

    import java.io.ByteArrayOutputStream;

    import java.io.StringReader;

    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;

    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.DocumentHelper;
    import org.xml.sax.InputSource;

    /**
    * w3c document 与 dom4j document转化工具类
    *
    * @author zhang.haifeng
    *
    */
    public class DocTransformUtil {
    // 单例
    private static final DocTransformUtil DOC_TRANSFORM_UTIL = new DocTransformUtil();

    private DocTransformUtil() {

    }

    /**
    * 获取一个工具类实例
    *
    * @return
    */
    public DocTransformUtil getInstance() {
    return DOC_TRANSFORM_UTIL;
    }

    /**
    * org.w3c.dom.Document -> org.dom4j.Document
    *
    * @param doc
    * Document(org.w3c.dom.Document)
    * @return Document
    */
    public static Document parse(org.w3c.dom.Document doc) throws Exception {
    if (doc == null) {
    return (null);
    }
    org.dom4j.io.DOMReader xmlReader = new org.dom4j.io.DOMReader();
    return (xmlReader.read(doc));
    }

    /**
    * org.dom4j.Document -> org.w3c.dom.Document
    *
    * @param doc
    * Document(org.dom4j.Document)
    * @throws Exception
    * @return Document
    */
    public static org.w3c.dom.Document parse(Document doc) throws Exception {
    if (doc == null) {
    return (null);
    }
    java.io.StringReader reader = new java.io.StringReader(doc.asXML());
    org.xml.sax.InputSource source = new org.xml.sax.InputSource(reader);
    javax.xml.parsers.DocumentBuilderFactory documentBuilderFactory = javax.xml.parsers.DocumentBuilderFactory
    .newInstance();
    javax.xml.parsers.DocumentBuilder documentBuilder = documentBuilderFactory
    .newDocumentBuilder();
    return (documentBuilder.parse(source));
    }

    /**
    * string -> document(w3c)
    *
    * @param xmlStr
    * @return
    * @throws Exception
    */
    public static org.w3c.dom.Document stringToW3cDoc(String xmlStr)
    throws Exception {
    StringReader sr = new StringReader(xmlStr);
    InputSource is = new InputSource(sr);
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    org.w3c.dom.Document doc = builder.parse(is);
    return doc;
    }

    /**
    * string -> document(dom4j)
    *
    * @param xmlStr
    * @return
    * @throws DocumentException
    */
    public static Document stringToDom4jDoc(String xmlStr)
    throws DocumentException {
    Document document = DocumentHelper.parseText(xmlStr);
    return document;
    }

    /**
    * document(w3c)-> string
    *
    * @param doc
    * @return
    * @throws Exception
    */
    public static String w3cDocToString(org.w3c.dom.Document doc)
    throws Exception {
    TransformerFactory tf = TransformerFactory.newInstance();
    Transformer t = tf.newTransformer();
    t.setOutputProperty("/encoding/", "/GB23121/");// 解决中文问题,试过用GBK不行
    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    t.transform(new DOMSource(doc), new StreamResult(bos));
    String xmlStr = bos.toString();
    return xmlStr;
    }

    /**
    * document(dom4j)->string
    * @param doc
    * @return
    */
    public static String dom4jDocToString(Document doc) {
    String str = doc.asXML();
    return str;
    }
    }

  • 相关阅读:
    利用pyautogui自动化领取dnf的在线养竹活动的竹子
    idea2019.3版本的安装
    二叉树文本分析
    表达式树的创建
    24点游戏
    二叉树
    队列操作
    HuffmanTree
    两数之和
    面向对象Python
  • 原文地址:https://www.cnblogs.com/cxyzl/p/2631474.html
Copyright © 2011-2022 走看看