获取xml的所有子节点

应用webservice传输xml时,可能需要获取xml的所有子节点,本文为获取子节点相关代码及介绍!

  • 1.获取根
    public String getRoot(String xml) throws DocumentException{Document doc = DocumentHelper.parseText(xml);  @SuppressWarnings("unused")SAXReader reader = new SAXReader();  Element root=doc.getRootElement(); return getNodes(root);}
  • 2. 根据参数root获取节点,并且对有下属节点的节点进行了递归调用
    /*** @param root* @throws IOException * @des 根据参数root获取节点,并且对有下属节点的节点进行了递归调用*/@SuppressWarnings("unchecked")public String getNodes(Element root){StringBuffer sb =new StringBuffer();String el ="<"+ root.getName()+">"+"\r\n";String el2 ="</"+ root.getName()+">";sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");sb.append(el);for(Iterator it=root.elementIterator();it.hasNext();){  Element element = (Element) it.next();  List<Element> listElement = element.elements();//判断根目录下的所有子节点得到的list.size是否大于0,如果大于则遍历所有一级子节点if(listElement.size()>0){String nodeF =  "<"+element.getName()+">"+"\r\n";sb.append(nodeF);for (Element e : listElement) {// 遍历所有一级子节点String s = "<"+e.getName()+">";String s1 = "</"+e.getName()+">"+"\r\n";if(e.getText()!=null && !"".equals(e.getText())){String ss =s+e.getText()+s1;sb.append(ss);getNodes(e);// 递归  }  }String nodeF2 =  "</"+element.getName()+">"+"\r\n";sb.append(nodeF2);}else  {String nodeF = "<"+element.getName()+">";String nodeF2 = "</"+element.getName()+">"+"\r\n";if(element.getText()!=null && !"".equals(element.getText())){sb.append(nodeF+element.getText()+nodeF2);}else sb.append(nodeF+nodeF2);}}sb.append(el2);return sb.toString();}
  • 3.全部代码
package util;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class IteraXml {/*** @param xml* @throws IOException * @des 根据参数xml获取根目录*/public String getRoot(String xml) throws DocumentException{Document doc = DocumentHelper.parseText(xml);  @SuppressWarnings("unused")SAXReader reader = new SAXReader();  Element root=doc.getRootElement(); return getNodes(root);}/*** @param root* @throws IOException * @des 根据参数root获取节点,并且对有下属节点的节点进行了递归调用*/@SuppressWarnings("unchecked")public String getNodes(Element root){StringBuffer sb =new StringBuffer();String el ="<"+ root.getName()+">"+"\r\n";String el2 ="</"+ root.getName()+">";sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");sb.append(el);for(Iterator it=root.elementIterator();it.hasNext();){  Element element = (Element) it.next();  List<Element> listElement = element.elements();//判断根目录下的所有子节点得到的list.size是否大于0,如果大于则遍历所有一级子节点if(listElement.size()>0){String nodeF =  "<"+element.getName()+">"+"\r\n";sb.append(nodeF);for (Element e : listElement) {// 遍历所有一级子节点String s = "<"+e.getName()+">";String s1 = "</"+e.getName()+">"+"\r\n";if(e.getText()!=null && !"".equals(e.getText())){String ss =s+e.getText()+s1;sb.append(ss);getNodes(e);// 递归  }  }String nodeF2 =  "</"+element.getName()+">"+"\r\n";sb.append(nodeF2);}else  {String nodeF = "<"+element.getName()+">";String nodeF2 = "</"+element.getName()+">"+"\r\n";if(element.getText()!=null && !"".equals(element.getText())){sb.append(nodeF+element.getText()+nodeF2);}else sb.append(nodeF+nodeF2);}}sb.append(el2);return sb.toString();}public String getReturnXMl(String xml) throws DocumentException{return getRoot(xml);}
//  public static void main(String[] args) throws DocumentException {//      String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
//      "<reqData>"+
//          "<qflag>你好</qlag>"+
//          "<test>"+
//          "<test1>test1</test1>"+
//          "<test2>test2</test2>"+
//          "</test>"+
//          "<poNo>测试</poNo>"+
//      "</reqData>";
//      IteraXml im = new IteraXml();
//      String ss = im.getRoot(xml);
//      System.out.println(ss);
//  }}
选中注释的main函数,ctrl+/即可解开注释,进行测试
  • *注意事项:
    1.xml 的拼接方法要正确,否则会报错
    2.字符串拼接“\r\n”是为换行
    3.暂时没了

项目中xml获取所有子节点相关推荐

  1. Java根据父节点获取所有子节点

    通过递归调用的方式根据父节点获取所有子节点并返回列表: //1. 查找父节点位置://2. 根据父节点获取下面的子节点://3. 遍历得到下面的子节点:public static List<St ...

  2. 项目中使用antv G6 实现节点链路之间动态效果

    项目前端开发框架是使用VUE 项目需求:在不同的服务节点之间,根据不同的链路数据,显示出节点之间的链路状态,同时实现节点之间的动态效果. 先看效果 1 下载依赖包 # 使用CND引入 npm i @a ...

  3. java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性

    通常情况下,我们会在一些配置文件文件中配置一些属性.如: indexPath = E\:\\Tomcat_7.0\\webapps\\ipost_stage\\lucene\\index imgUpl ...

  4. react项目中把获取的url转换成二维码

    在项目开发中遇到一个需求就是把后台返回的URL路径转换成二维码,经过像度娘查询之后选用了一种方法,并且已经在项目中成功使用,所以专门来记录下,避免以后忘记,处理步骤如下: 安装该依赖的来源:https ...

  5. 神奇的Grails:自关联的树状Domain一行代码获取所有子节点

    见证Groovy/Grails的神奇时刻到了,你相信吗?用一行代码就可以获取树状结构中某节点下的所有全部子节点!注意:这个树是无深度限制的.无深度限制这点很重要,如果有限深度的树,那我们也很容易通过层 ...

  6. Springboot 项目中 xml文件读取yml 配置文件

    2019独角兽企业重金招聘Python工程师标准>>> 在xml文件中读取yml文件即可,代码如下: 现在spring-boot提倡零配置,但是的如果要集成老的spring的项目,涉 ...

  7. oracle获取所有子节点,oracle递归查询所有子节点

    Q4:Oracle通过递归查询父子兄弟节点方法示例 前言 说到Oracle中的递归查询语法,我觉得有一些数据库基础的童鞋应该都知道,做项目的时候应该也会用到,下面本文就来介绍下关于Oracle通过递归 ...

  8. SpringBoot项目中,获取配置文件信息

    1.在配置文件中设置信息,格式如下 wechat:mpAppId: wxdf2b09f280e6e6e2mpAppSecret: f924b2e9f140ac98f9cb5317a8951c71 如果 ...

  9. 亿级流量电商详情页系统实战-18.在项目中以经典的3节点方式部署哨兵集群

    1.哨兵节点的增加和删除 1.1 增加sentinal,会自动发现 1.2 删除sentinal的步骤 停止sentinal进程 SENTINEL RESET *,在所有sentinal上执行,清理所 ...

最新文章

  1. 青少年编程竞赛交流群周报(第039周)
  2. [转]WebView长按弹出复制粘贴
  3. 车牌识别之车牌定位(方案总结)
  4. ADO.NET、ODP.NET、Linq to SQL、ADO.NET Entity 、NHibernate在Oracle下的性能比较
  5. 很有气势的语言openeim
  6. 人能为赚钱吃多少苦?
  7. Mac下虚拟机使用那些事儿
  8. Serv-U和win2003防火墙的设置
  9. 全网首发:FFMpeg使用NVIDIA DECODER,解码后的数据是NV12,不是YUV420P
  10. 八 关于电机驱动芯片L298N使用心得
  11. 如何在服务台提交工单?
  12. shell—(色彩处理)
  13. 电子数据取证-流程与技术
  14. 计蒜客 青出于蓝胜于蓝 (树状数组 + dfs序)
  15. 基于Docker-compose编排部署sentiment-analyzer情感分析系统(老保姆级讲解-部署)
  16. 红黑树时间复杂度为什么是O(logn)?
  17. 新手学CAD入门到精通,迅捷CAD图库大全免费下载!
  18. [ARM] ARM处理器的7种工作模式和2种工作状态
  19. 洛谷P1710 地铁涨价
  20. 【Linux性能分析】火焰图(Flame Graphs)的安装和基本用法

热门文章

  1. iOS高仿国美、二次元应用、点赞喷射动画、电影筛选页等源码
  2. 太阳系c语言代码大全,C生万物,编程之本!
  3. 路径里的正斜杠和反斜杠 区别
  4. excel公式--根据分数统计人数
  5. 一个阿里云资源库,宝藏
  6. Servlet--基本二(请求对象,文件下载)
  7. uva11163 Jaguar King
  8. Git查看本地分支、远程分支、所有分支
  9. 什么是mysql的读写分离_什么是数据库读写分离?
  10. JavaScript的入门学习