import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class AnaliysisXml {
/**
*获取指定节点的String格式内容
* @param eleName 节点
* @param XML XML文件
* @return
* @throws DocumentException
*/
public String getElementText(String eleName,File XML){
SAXReader reader=new SAXReader();
Document document = null;
try {
document = reader.read(XML);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Element root=document.getRootElement();
Element element=root.element(eleName);
return element.getText();
}
/**
* 获取指定节点的String格式内容
* @param eleName 指定的节点
* @param XML XML字符串
* @return
*/
public String getElementText(String eleName,String XML){
Document document = null;
try {
document = DocumentHelper.parseText(XML);
} catch (DocumentException e) {
e.printStackTrace();
}
Element root=document.getRootElement();
Element element=root.element(eleName);
return element.getText();
}
/**
*检测是否还有子节点,若有则将节点数据转成JSON
*/
public String checkChildEle(Element element) {
String json="";
List<Element> list = new ArrayList<Element>();
list=element.elements();
if (list.size()>0) {
for (Element ele : list) {
json+=ele.getName()+":"+ele.getText()+","+"\r\n"+checkChildEle(ele);
}
}
return json;
}
/**
* 获取所有节点
* @param XML xml字符串
* @return json格式
*/
public String getAllElementAndtext(String XML) {
Document document = null;
try {
document = DocumentHelper.parseText(XML);
} catch (DocumentException e) {
e.printStackTrace();
}
Element root=document.getRootElement();
Iterator it=root.elementIterator();
String json="{";
while (it.hasNext()) {
Element element =(Element)it.next();
String j=checkChildEle(element);
if (j=="") {
json+=element.getName()+":"+element.getText()+","+"\r\n";
}else {
json+=j;
}
}
json+="}";
return json;
}
/**
* 获取所有节点的内容
* @param XML xml文件
* @return
*/
public String getAllElementAndtext(File XML) {
SAXReader saxReader=new SAXReader();
Document document = null;
try {
document = saxReader.read(XML);
} catch (DocumentException e) {
e.printStackTrace();
}
Element root=document.getRootElement();
Iterator it=root.elementIterator();
String json="{";
while (it.hasNext()) {
Element element =(Element)it.next();
String j=checkChildEle(element);
if (j=="") {
json+=element.getName()+":"+element.getText()+","+"\r\n";
}else {
json+=j;
}
}
json+="}";
return json;
}
/**
* 检测指定节点下是否还有子节点,若有子节点则将子节点数据转成List<Map<String, String>>
* @param element
* @return
*/
public List<Map<String, String>> checkChildEleChangeList(Element element) {
List<Map<String, String>> list1=new ArrayList<Map<String,String>>();
String json="";
List<Element> list = new ArrayList<Element>();
list=element.elements();
if (list.size()>0) {
for (Element ele : list) {
Map<String, String> map=new HashMap<String, String>();
map.put(ele.getName(), ele.getText());
list1.add(map);
list1.addAll(checkChildEleChangeList(ele));
}
}
return list1;
}
/**
* 将XML转成 List<Map<String, String>>
* @param XML
* @return
*/
public List<Map<String, String>> changeXmlToList(File XML) {
List<Map<String, String>> list1=new ArrayList<Map<String,String>>();
SAXReader saxReader=new SAXReader();
Document document = null;
try {
document = saxReader.read(XML);
} catch (DocumentException e) {
e.printStackTrace();
}
Element root=document.getRootElement();
Iterator it=root.elementIterator();
while (it.hasNext()) {
Element element =(Element)it.next();
List<Map<String, String>> j=checkChildEleChangeList(element);
if (j.size()==0) {
Map<String, String> map=new HashMap<String, String>();
map.put(element.getName(), element.getText());
list1.add(map);
}else {
list1.addAll(j);
}
}
return list1;
}
/**
* 将XML转成 List<Map<String, String>>
* @param XML
* @return
*/
public List<Map<String, String>> changeXmlToList(String XML) {
List<Map<String, String>> list1=new ArrayList<Map<String,String>>();
Document document = null;
try {
document = DocumentHelper.parseText(XML);
} catch (DocumentException e) {
e.printStackTrace();
}
Element root=document.getRootElement();
Iterator it=root.elementIterator();
while (it.hasNext()) {
Element element =(Element)it.next();
List<Map<String, String>> j=checkChildEleChangeList(element);
if (j.size()==0) {
Map<String, String> map=new HashMap<String, String>();
map.put(element.getName(), element.getText());
list1.add(map);
}else {
list1.addAll(j);
}
}
return list1;
}
}