commons-beanutils.jar
commons-collections-3.2.2.jar
commons-lang.jar
commons-logging.jar
dom4j-1.6.1.jar
ezmorph-1.0.5.jar
jaxen-1.1-beta-9.jar
json-lib-2.2-jdk15.jar
junit-4.4.jar
log4j-1.2.15.jar
ojdbc14_11g.jar
xom-1.2.5.jar
import java.io.File;
import java.io.FileWriter;
import java.net.URL;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JSONSerializer;
import net.sf.json.xml.XMLSerializer;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
public class XmlUtil {
/**
* 讀取XML文件,獲取Document對象
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @param fileName
* @return Document
* @throws DocumentException
* Document
*/
public static Document getXmlDocumentByFile(String fileName) throws DocumentException{
SAXReader reader = new SAXReader();
File file = new File(fileName);
Document document= reader.read(file);
return document;
}
/**
*
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @param url
* @return
* @throws DocumentException
* Document
*/
public static Document getXmlDocumentByURL(URL url) throws DocumentException{
SAXReader reader = new SAXReader();
Document document= reader.read(url);
return document;
}
/**
* 字符串轉換成XML Document對象
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @param xmlStringContent
* @return
* @throws DocumentException
* Document
*/
public static Document getXmlDocumentByCharacterString(String xmlStringContent) throws DocumentException{
Document document = DocumentHelper.parseText(xmlStringContent);
return document ;
}
/**
* 將Document對象轉換成String字符串
* zhenhua920 CreateDate: 2016年5月3日
* @param doc
* @return
* String
*/
public static String getStringByDocument(Document doc){
return doc.asXML();
}
/**
*
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @param doc
* @return
* Element
*/
public static Element getRootElement(Document doc){
Element result = doc.getRootElement();
return result;
}
/**
* XML Document 獲取 Element 對象下的指定子 Element 對象
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @param src
* @param elementName
* @return type is List
* List<Element>
*/
@SuppressWarnings("unchecked")
public static List<Element> getChildNodes(Element src,String elementName){
List<Element> list = src.elements(elementName);
return list;
}
/**
* 獲取節點指定的子節點的Text值
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @param src
* @param elementName
* @return
* String
*/
public static String getChildNodeText(Element src,String elementName){
String result = src.elementText(elementName);
return result;
}
/**
* XML Document 獲取 Element 對象 下的所有子 Element 對象
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @param src
* @return
* List<Element>
*/
@SuppressWarnings("unchecked")
public static List<Element> getAllChildNodes(Element src){
List<Element> list = src.elements();
return list;
}
/**
* 獲取當前節點的值
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @param src
* @return
* String
*/
public static String getElementText(Element src){
String result = src.getTextTrim();
return result;
}
/**
* 獲取當前節點指定子節點的值
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @param src
* @param childNodeName
* @return
* String
*/
public static String getElementChildNodeText(Element src,String childNodeName){
String result = src.elementTextTrim(childNodeName);
return result;
}
@SuppressWarnings("unchecked")
public static List<Element> getElementByDocumentSelectedNode(Document doc,String nodeName){
List<Element> result = doc.selectNodes(nodeName);
return result ;
}
/**
* 創建空文檔
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @return
* Document
*/
public Document createDocument(){
Document doc = DocumentHelper.createDocument();
return doc;
}
// ------------------------寫入XML---------------------------//
/**
* 新增節點
* zhenhua920 CreateDate: 2016年5月3日
* @param src
* @param nodeName
* @param value
* void
*/
public void addElement(Element src,String nodeName,String value){
src.addElement(nodeName).setText(value);
}
/**
* 插入數據到標籤
* zhenhua920 CreateDate: 2016年5月3日
* @param src
* @param value
* void
*/
public void setElementValue(Element src,String value){
src.setText(value);
}
//設置節點屬性值
public void setAttribute(Element src,Map<String,Object> attribute){
for(Entry<String,Object> a: attribute.entrySet()){
src.addAttribute(a.getKey(), a.getValue().toString());
}
}
//XML文檔轉換成字符串
/**
*
* Administrator CreateDate: 2015-10-16 com.yinhai.zhenhua.utilXmlUtil.java
* @param doc
* @param fileName
* @param encoding
* void
* @throws Exception
*/
public static void buildXmlFile(Document doc, String fileName, String encoding) throws Exception {
try {
//創建一個java.io包中的fileWriter對象,指定目標文件
FileWriter fw = new FileWriter(fileName);
//制定XML文件的輸出格式
OutputFormat format = OutputFormat.createPrettyPrint();
if(encoding==null || encoding == ""){
encoding = "UTF-8";
}
format.setEncoding(encoding);
//寫出xml文件到操作系統
XMLWriter xmlWriter = new XMLWriter(fw,format);
xmlWriter.write(doc);
xmlWriter.close();
} catch (Exception e) {
throw new Exception("創建XML文件失敗,文件名稱:" + fileName);
}
}
/**
* 將Document 轉換成 byte[]
* @param doc
* @param encoding
* @return
* @throws Exception
*/
public static byte[] buildXml(Document doc,String encoding) throws Exception {
try {
ByteArrayOutputStream memoryBuff = new ByteArrayOutputStream();
OutputStreamWriter fw = new OutputStreamWriter(memoryBuff);
//制定XML文件的輸出格式
OutputFormat format = OutputFormat.createPrettyPrint();
if(encoding==null || encoding == ""){
encoding = "UTF-8";
}
format.setEncoding(encoding);
//寫出xml文件到操作系統
XMLWriter xmlWriter = new XMLWriter(fw,format);
xmlWriter.write(doc);
xmlWriter.close();
return memoryBuff.toByteArray();
} catch (Exception e) {
throw new Exception(e);
}
}
/**
* 使用dom4j,json的jar包 將XML轉換爲JSON
* zhenhua920 CreateDate: 2016年5月3日
* @param Element rootElement dom4j的節點對象
* void
*/
public static String convertXMLToJSON(Element rootElement){
/*
* 1,遞歸遍歷節點
* 2,創建JSON對象
* 3,將遍歷得到的節點信息加入到JSON對象當中
* 4,將JSON字符串返回
*/
Iterator<Element> rootIt = rootElement.elementIterator();
if(rootIt.hasNext()){
JSONArray jarray = new JSONArray();
while(rootIt.hasNext()){
JSONObject obj = new JSONObject();
Element e = rootIt.next();
obj.accumulate(e.getName(), convertXMLToJSON(e));
jarray.add(obj);
}
return jarray.toString();
}else{
JSONObject obj = new JSONObject();
obj.accumulate(rootElement.getName(), rootElement.getTextTrim());
return obj.toString();
}
}
/**
* 將JSON轉換成 XML
* zhenhua920 CreateDate: 2016年5月3日
* @param json
* @return
* String
*/
public static Element convertJSONToXML(String json){
//TODO
//XMLSerializer serializer = new XMLSerializer();
JSON jsonObject = JSONSerializer.toJSON(json);
System.out.println(jsonObject);
if(!jsonObject.isEmpty()){
if(jsonObject.isArray()){
Document doc = DocumentHelper.createDocument();
JSONArray arr = JSONArray.fromObject(jsonObject.toString());
for(int i=0;i<arr.size();i++){
JSON js= JSONSerializer.toJSON(arr.get(i));
}
}else{
Document doc = DocumentHelper.createDocument();
JSONObject js = JSONObject.fromObject(jsonObject.toString());
for(Iterator<String> it = js.keySet().iterator();it.hasNext();){
String key = it.next();
String value = js.getString(key);
doc.addElement(key).setText(value);
}
return doc.getRootElement();
}
}
return null;
}
}