700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 项目中xml获取所有子节点

项目中xml获取所有子节点

时间:2023-02-02 21:02:30

相关推荐

项目中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.暂时没了

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。