将xml字符串的所有叶标签转换成Map集合
2020-01-03 16:05:48来源:博客园 阅读 ()
将xml字符串的所有叶标签转换成Map集合
实际问题:对方服务器接口采用webservice方式返回xml报文,现需解析xml获取所有叶节点的标签名及携带的值
解决方案:利用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; public class XmlUtil { /** * 接收xml文件字符串,返回一个Map,其包含xml中所有叶节点的K-V,举例: * 入参: * <ROOT> * <a> * <aa>aa</aa> * <aaa>aaa</aaa> * </a> * <b> * <bb>bb</bb> * <bbb>bbb</bbb> * </b> * <c>c</c> * </ROOT> * 返回: * {aa=aa, aaa=aaa, bb=bb, bbb=bbb, c=c} * * @param xmlStr xml文件字符串 * @return */ public static Map<String, Object> xml2Map(String xmlStr) { Map<String, Object> map = new HashMap<String, Object>(); try { // 将xml格式的字符串转换成Document对象 Document doc = DocumentHelper.parseText(xmlStr); // 获取根节点 Element root = doc.getRootElement(); // 将xml的所有叶节点的name-value封装进Map leafNode2Map(map, root); } catch (Exception e) { e.printStackTrace(); } return map; } /** * 将xml的所有叶节点的name-value封装进Map * * @param map * @param node */ @SuppressWarnings("unchecked") private static void leafNode2Map(Map<String, Object> map, Element node) { List<Element> elements = node.elements(); if (elements == null || elements.size() == 0) { map.put(node.getName(), node.getTextTrim()); } else { for (Element element : elements) { // 递归 leafNode2Map(map, element); } } } public static void main(String[] args) { String xmlStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ROOT><a><aa>aa</aa><aaa>aaa</aaa></a><b><bb>bb</bb><bbb>bbb</bbb></b><c>c</c></ROOT>"; Map<String, Object> map = xml2Map(xmlStr); System.out.println(map);// {aa=aa, aaa=aaa, bb=bb, bbb=bbb, c=c} } }
原文链接:https://www.cnblogs.com/yfzhou528/p/12147357.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Java实现的三种字符串反转 2020-06-09
- 当IntelliJ IDEA2020.1遇上JDK14:所有美好环环相扣 2020-06-01
- Spring02_基于XML的IOC 2020-05-24
- 我说我精通字符串,面试官竟然问我Java中的String有没有长度 2020-05-20
- LeetCode 680. 验证回文字符串 Ⅱ 2020-05-19
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash