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

  • 相关阅读:
    Linux基础知识
    redis info
    记录: 解决 pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other)
    IOS IAP 自动续订 之 利用rabbitmq延时队列自动轮询检查是否续订成功
    Python3.6 的字典为什么会快
    IAP 订阅后端踩坑总结之 Google 篇
    docker 命令合集
    Python Schema使用说明
    Apache Bench测试
    channels2.X 学习笔记
  • 原文地址:https://www.cnblogs.com/cxyzl/p/2631474.html
Copyright © 2011-2022 走看看