dom4j解析xml字符串 博客分类: 公用方法 dom4j
程序员文章站
2024-02-21 16:00:46
...
使用dom4j将xml字符串解析为map:
import java.util.HashMap; import java.util.List; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; @SuppressWarnings("unchecked") public class XmlParser { public static Map<String,Object> readData(Element ele){ Map<String,Object> map = new HashMap<String,Object>(); //得到元素列表遍历 List<Element> eList = ele.elements(); for(Element e : eList){ if(e.elements().isEmpty()){ //如果该元素子元素为空,则直接获取文本 // e.getData() e.getStringValue();e.getText()e.getTextTrim() map.put(e.getName(), e.getText()); }else{ //若有子元素,则递归取值 map.put(e.getName(), readData(e)); } } return map; } public static Map<String,Object> readXml(String xml){ Map<String,Object> map = null; try{ Document doc = DocumentHelper.parseText(xml); // 获取根节点 Element rootElt = doc.getRootElement(); //通过根节点获取数据 map = readData(rootElt); }catch(Exception e){ e.printStackTrace(); } return map; } public static void main(String[] args) { String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><a><c> 6 6 </c></a><b>2</b></root>"; Map<String,Object> root = readXml(str); for (Map.Entry<String, Object> entry : root.entrySet()) { System.out.println(entry.getKey() + ":" + entry.getValue()); } } }
备注:
1)代码中使用元素名称作为key,如果需要使用某些属性值作为key,可以使用attributeValue方法取得名称作为key。
2)取得节点值有四个方法:e.getData() e.getStringValue() e.getText() e.getTextTrim()
其中getText和getTextTrim两个的区别看名称就可以理解,getTextTrim是取除左右空格的(内容中如果有两个或两个以上的空格会转为一个空格);getStringValue是取该节点下全部的string,若有子标签,会将子标签中的文本拼成一个字符串返回,说白了就是将该元素下所有的元素标签去掉以后的内容的拼接;getData的话,经过测试,所得结果和getText一致。
3)使用反射可以将map转换为Javabean对象(代码懒得写了=_=)。
推荐阅读
-
dom4j创建xml和读取xml的demo 博客分类: java基础 dom4jxmlSAXReader
-
Java操作XML文件 dom4j 篇 转 博客分类: JAVA-XML xmldom4j
-
dom4j解释XML 博客分类: Java xmldom4j
-
dom4j解析xml字符串 博客分类: 公用方法 dom4j
-
dom4j操作xml 博客分类: XML dom4jxmljava
-
通过dom4j解析xml字符串(示例代码)
-
java dom4j解析xml用到的几个方法
-
通过dom4j解析xml字符串(示例代码)
-
java dom4j解析xml用到的几个方法
-
dom4j创建和解析xml文档的实现方法