package com.zfsoft.test;
import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class TestDom4j {
//将xml转换成字符串
public String xmlToString(String xmlFileName){
SAXReader saxReader=new SAXReader();
Document document;
String xmlString="";
try {
document = saxReader.read(new File(xmlFileName));
xmlString=document.asXML();
} catch (Exception e) {
e.printStackTrace();
xmlString="";
}
return xmlString;
}
/**
* @description 将xml字符串转换成map
* @param xml
* @return Map
*/
public static Map<String,String> readStringXmlOut(String xml) {
Map<String,String> map = new HashMap<String,String>();
Document doc = null;
try {
// 将字符串转为XML
doc = DocumentHelper.parseText(xml);
// 获取根节点
Element rootElt = doc.getRootElement();
// 拿到根节点的名称
System.out.println("根节点=" + rootElt.getName());
// 获取根节点下的子节点head
Iterator<Element> iter = rootElt.elementIterator("MATERIALS");
// 遍历MATERIALS节点
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
// 获取子节点MATERIALS下的子节点MATERIAL
Iterator<Element> iters = recordEle.elementIterator("MATERIAL");
while (iters.hasNext()) {
Element itemEle = (Element) iters.next();
// 拿到MATERIALS下的子节点MATERIAL下的字节点MATERIALGUID,NAME的值
String materialOid = itemEle.elementTextTrim("MATERIALGUID");
String materialName = itemEle.elementTextTrim("NAME");
map.put("materialOid", materialOid);
map.put("materialName", materialName);
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
return map;
}
public void readStringXml(String xml) {
Document doc = null;
try {
// 读取并解析XML文档,SAXReader就是一个管道,用一个流的方式,把xml文件读出来
SAXReader reader = new SAXReader();
doc = reader.read(new File(xml));
Element rootElt = doc.getRootElement(); // 获取根节点
System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称
Iterator<Element> iter = rootElt.elementIterator("MATERIALS"); // 获取根节点下的子节点head
// 遍历MATERIALS节点
while (iter.hasNext()) {
Element recordEle = (Element) iter.next();
Iterator<Element> iters = recordEle.elementIterator("MATERIAL"); // 获取子节点head下的子节点script
// 遍历MATERIAL节点
while (iters.hasNext()) {
Element itemEle = (Element) iters.next();
String materialOid = itemEle.elementTextTrim("MATERIALGUID");
String materialName = itemEle.elementTextTrim("NAME");
System.out.println("materialOid:" + materialOid);
System.out.println("materialName:" + materialName);
}
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//第一种方式
String xmlFileName="D:\\NewFile.xml";
TestDom4j test = new TestDom4j();
test.readStringXml(xmlFileName);
//第二种方式
Map<String,String> map = readStringXmlOut(xmlString);
Iterator<String> iters = (Iterator)map.keySet().iterator();
while (iters.hasNext()) {
String key = iters.next(); // 拿到键
String val = map.get(key).toString(); // 拿到值
System.out.println(key + "=" + val);
}
}
}