项目中xml获取所有子节点
获取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获取所有子节点相关推荐
- Java根据父节点获取所有子节点
通过递归调用的方式根据父节点获取所有子节点并返回列表: //1. 查找父节点位置://2. 根据父节点获取下面的子节点://3. 遍历得到下面的子节点:public static List<St ...
- 项目中使用antv G6 实现节点链路之间动态效果
项目前端开发框架是使用VUE 项目需求:在不同的服务节点之间,根据不同的链路数据,显示出节点之间的链路状态,同时实现节点之间的动态效果. 先看效果 1 下载依赖包 # 使用CND引入 npm i @a ...
- java maven 读取配置文件_Java项目和maven项目中如何获取设置配置文件中的属性
通常情况下,我们会在一些配置文件文件中配置一些属性.如: indexPath = E\:\\Tomcat_7.0\\webapps\\ipost_stage\\lucene\\index imgUpl ...
- react项目中把获取的url转换成二维码
在项目开发中遇到一个需求就是把后台返回的URL路径转换成二维码,经过像度娘查询之后选用了一种方法,并且已经在项目中成功使用,所以专门来记录下,避免以后忘记,处理步骤如下: 安装该依赖的来源:https ...
- 神奇的Grails:自关联的树状Domain一行代码获取所有子节点
见证Groovy/Grails的神奇时刻到了,你相信吗?用一行代码就可以获取树状结构中某节点下的所有全部子节点!注意:这个树是无深度限制的.无深度限制这点很重要,如果有限深度的树,那我们也很容易通过层 ...
- Springboot 项目中 xml文件读取yml 配置文件
2019独角兽企业重金招聘Python工程师标准>>> 在xml文件中读取yml文件即可,代码如下: 现在spring-boot提倡零配置,但是的如果要集成老的spring的项目,涉 ...
- oracle获取所有子节点,oracle递归查询所有子节点
Q4:Oracle通过递归查询父子兄弟节点方法示例 前言 说到Oracle中的递归查询语法,我觉得有一些数据库基础的童鞋应该都知道,做项目的时候应该也会用到,下面本文就来介绍下关于Oracle通过递归 ...
- SpringBoot项目中,获取配置文件信息
1.在配置文件中设置信息,格式如下 wechat:mpAppId: wxdf2b09f280e6e6e2mpAppSecret: f924b2e9f140ac98f9cb5317a8951c71 如果 ...
- 亿级流量电商详情页系统实战-18.在项目中以经典的3节点方式部署哨兵集群
1.哨兵节点的增加和删除 1.1 增加sentinal,会自动发现 1.2 删除sentinal的步骤 停止sentinal进程 SENTINEL RESET *,在所有sentinal上执行,清理所 ...
最新文章
- 青少年编程竞赛交流群周报(第039周)
- [转]WebView长按弹出复制粘贴
- 车牌识别之车牌定位(方案总结)
- ADO.NET、ODP.NET、Linq to SQL、ADO.NET Entity 、NHibernate在Oracle下的性能比较
- 很有气势的语言openeim
- 人能为赚钱吃多少苦?
- Mac下虚拟机使用那些事儿
- Serv-U和win2003防火墙的设置
- 全网首发:FFMpeg使用NVIDIA DECODER,解码后的数据是NV12,不是YUV420P
- 八 关于电机驱动芯片L298N使用心得
- 如何在服务台提交工单?
- shell—(色彩处理)
- 电子数据取证-流程与技术
- 计蒜客 青出于蓝胜于蓝 (树状数组 + dfs序)
- 基于Docker-compose编排部署sentiment-analyzer情感分析系统(老保姆级讲解-部署)
- 红黑树时间复杂度为什么是O(logn)?
- 新手学CAD入门到精通,迅捷CAD图库大全免费下载!
- [ARM] ARM处理器的7种工作模式和2种工作状态
- 洛谷P1710 地铁涨价
- 【Linux性能分析】火焰图(Flame Graphs)的安装和基本用法