Dom4j解析字符串xml格式
dom4j是⼀个Java的XML API,是jdom的升级品,⽤来读写XML⽂件的。dom4j是⼀个⼗分优秀的JavaXML API,具有性能优异、功能强⼤和极其易使⽤的特点,它的性能超过sun公司官⽅的dom技术,同时它也是⼀个开放源代码的软件。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class DomDemo {
public static void main(String[] args) throws DocumentException {
String data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
data += "<UTILITY_PAYMENT><DATA_AREA><TRAN_CODE>";
data += "333";
data += "</TRAN_CODE><BANK_CODE>";
data += "03";
data += "</BANK_CODE><SEARCH_CODE>";
data += "123456789";
data += "</SEARCH_CODE></DATA_AREA></UTILITY_PAYMENT>";
readToMap(data);
}
使用dom4j解析xml文件
public static void readXml(String xml) throws DocumentException {
Document doc = null;
// 下⾯的是通过解析xml字符串的
doc = DocumentHelper.parseText(xml); // 将字符串转为XML
Element rootElt = RootElement(); // 获取根节点
System.out.println("根节点:" + Name()); // 拿到根节点的名称
Iterator iter = rootElt.elementIterator("DATA_AREA"); // 获取根节点下的⼦节点
// 遍历head节点
while (iter.hasNext()) {
Element recordEle = (Element) ();
String title = recordEle.elementTextTrim("TRAN_CODE"); // 拿到节点下的⼦节点值
System.out.println("TRAN_CODE:" + title);
}
}
/**
* @description 将xml字符串转换成map
* @param xml
* @return Map
*/
public static Map readToMap(String xml) {
Map map = new HashMap();
Document doc = null;
try {
// 将字符串转为XML
doc = DocumentHelper.parseText(xml);
// 获取根节点
Element rootElt = RootElement();
// 拿到根节点的名称
System.out.println("根节点:" + Name());
// 获取根节点下的⼦节点
Iterator iter = rootElt.elementIterator("DATA_AREA");
Iterator iter = rootElt.elementIterator("DATA_AREA");
// 遍历head节点
while (iter.hasNext()) {
Element recordEle = (Element) ();
// 拿到节点下的⼦节点值
String tranCode = recordEle.elementTextTrim("TRAN_CODE");
System.out.println("tranCode:" + tranCode);
map.put("tranCode", tranCode);
String bankCode = recordEle.elementTextTrim("BANK_CODE");
System.out.println("bankCode:" + bankCode);
map.put("bankCode", bankCode);
String searchCode = recordEle.elementTextTrim("SEARCH_CODE");    System.out.println("searchCode:" + searchCode);
map.put("searchCode", searchCode);
}
} catch (DocumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
}
根节点:UTILITY_PAYMENT
tranCode:333
bankCode:03
searchCode:123456789