`

遍历xml所有节点 采用dom4j,jdom

    博客分类:
  • XML
XML 
阅读更多

项目中做消息签名验证需要将xml各个节点值相加,采用dom4j和jdom分别实现。

 

 

dom4j:

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
String xml="<?xml version=\"1.0\" encoding=\"UTF-8\"><Order><Cid>456</Cid><Pwd>密码</Pwd><Pid>商品单号</Pid><Price>商品价格</Price></Order>";
		
 try {
Document doc = DocumentHelper.parseText(xml);
SAXReader reader = new SAXReader();

Element el=doc.getRootElement();
for(Iterator it=el.elementIterator();it.hasNext();){
 Element element = (Element) it.next();
System.out.println(element.getText());
			}
		} catch (DocumentException e) {
// TODO Auto-generated catch block
			e.printStackTrace();
		}

 

 

 jdom实现如下:

 

 

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;

 public List xmlElements(String xmlDoc) {

  //创建一个新的字符串
	        StringReader read = new StringReader(xmlDoc);
	        //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
	        InputSource source = new InputSource(read);
	        //创建一个新的SAXBuilder
	        SAXBuilder sb = new SAXBuilder();
	        try {
	            //通过输入源构造一个Document
	            Document doc = sb.build(source);
	            //取的根元素
	            Element root = doc.getRootElement();
	     	            //得到根元素所有子元素的集合
	            List jiedian = root.getChildren();
	            //获得XML中的命名空间(XML中未定义可不写)
	            Namespace ns = root.getNamespace();
	            Element et = null;
	            for(int i=0;i<jiedian.size();i++){
	                et = (Element) jiedian.get(i);//循环依次得到子元素
	                System.out.println(et.getValue());
	         	            }
	        	            }
	        } catch (JDOMException e) {
	            // TODO 自动生成 catch 块
	            e.printStackTrace();
	        } catch (IOException e) {
	            // TODO 自动生成 catch 块
	            e.printStackTrace();
	        }
	        return null;
	    }
	    public static void main(String[] args) throws Exception{
	   String xml0="<?xml version=\"1.0\" encoding=\"UTF-8\"?><Order><Cid>456</Cid><Pwd>密码</Pwd><Pid>商品单号</Pid><Prices><Price>商品价格01</Price><Price>商品价格02</Price></Prices></Order>";
	        doc.xmlElements(xml0);
	        
}

 

 

以上只能实现树结构2层的XML,以下递归出多层XML节点值:

 

	public static String getXmlElmentValue(String xml){
		StringBuffer str=new StringBuffer(); 
			try {
				org.dom4j.Document doc= DocumentHelper.parseText(xml);
				org.dom4j.Element el=doc.getRootElement();
				return recGetXmlElementValue(el,str).toString();
			} catch (DocumentException e) {
				e.printStackTrace();
				return null;
			}
		}
		
		private static StringBuffer recGetXmlElementValue(org.dom4j.Element ele,StringBuffer valueBuff){
			List eleList = ele.elements();
			if(eleList.size()==0){
				valueBuff.append(ele.getText().replaceAll("[\n-\r]", ""));
				return valueBuff;
			}else{
				for(Iterator<org.dom4j.Element> iter = eleList.iterator();iter.hasNext();){
					org.dom4j.Element innerEle = iter.next();
					recGetXmlElementValue(innerEle,valueBuff);
				}
				return valueBuff;
			}
		}

 

 

 

分享到:
评论

相关推荐

    java操作xml dom dom4j sax jdom

    为了处理XML文档,Java提供了多种API,其中最常用的包括DOM、SAX、DOM4J和JDOM。以下是对这些方法的详细介绍: 1. DOM(Document Object Model) DOM是一种树形结构的API,它将整个XML文档加载到内存中,形成一个...

    生成、解析xml的四种方式(dom,dom4j,sax,jdom)

    本文将详细介绍生成和解析XML的四种主要方法:DOM、DOM4J、SAX和JDOM。 1. DOM(Document Object Model) DOM是W3C组织推荐的一种解析XML的标准方式。它将XML文档视为一个树形结构,每个节点代表XML文档的一部分。...

    xml(jdom-dom4j).rar_DOM4J_dom4j xml java

    DOM4J通过提供易于使用的接口和类,使得开发者可以方便地遍历XML树、查找特定节点、添加或删除节点,以及修改节点内容。 1. **XML的创建**: 使用DOM4J创建XML文档通常涉及到创建Document对象,然后添加Element...

    DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式

    DOM4J支持XPath查询,可以更简单地定位和操作XML节点。此外,DOM4J也支持SAX解析,结合了DOM的便利性和SAX的效率。在生成XML字符串时,DOM4J提供了简洁的API来构建和输出XML文档。 4. JDOM JDOM是另一个Java的XML...

    java 操作xml(dom,sax,jdom,dom4j)需要的包

    在Java中,有多种方式来解析和操作XML文档,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM和DOM4J。每种方法都有其特点和适用场景,相应的,它们也需要引入特定的库文件。以下是对这些方法...

    XML四种解析方式------DOM SAX JDOM DOM4J

    在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...

    XML操作(dom,sax,jdom,dom4j)

    在处理XML时,有多种解析器可供选择,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM以及DOM4J。下面将详细解释这些解析方式及其特点。 1. DOM解析器 DOM解析器将整个XML文档加载到内存中,...

    JAVA读XML:sax,dom,jdom,dom4j的比较以及选择.doc

    Java读取XML文档时,通常有多种方法,包括SAX、DOM、JDOM和DOM4J等。这些解析器各有特点,适用于不同的场景。这里主要介绍DOM4J库的使用,DOM4J是一个非常灵活且功能强大的XML处理库,提供了丰富的API来处理XML文档...

    DOM4J/JDOM对XML的操作

    DOM4J和JDOM是Java中处理XML的主要库,提供了XML的解析、创建和修改功能。 JDOM是Java中一个专注于XML处理的库,它提供了一种简单和直接的方式来构建和操作XML文档。在提供的`parse()`方法中,可以看到如何使用JDOM...

    dom4j-jdom.rar

    通过这些对象,开发者可以方便地进行添加、删除、修改XML节点的操作,同时DOM4J还集成了XPath表达式的支持,使得查找和操作XML节点变得更加便捷。 接下来,我们来看看JDOM,它是Java中另一种流行的XML处理库。JDOM...

    dom4j-1.6.1

    - DOM4J的核心思想是提供一个灵活的、面向对象的模型来处理XML文档,包括元素、属性、文本节点等。 - 它不仅支持标准的DOM API,还提供了基于事件的SAX解析器和一个XPath实现,以满足不同场景的需求。 2. **主要...

    Java的Dom4j和JDom的jar包

    Java在处理XML文档时,经常会使用到解析库,其中Dom4j和JDom是两个非常重要的选择。这两个库都是基于Java的DOM(Document Object Model)实现,提供了方便的方式来读取、写入、修改XML文件。下面我们将详细探讨这两...

    DOM、JDOM、DOM4J解析XML实例

    ### DOM、JDOM、DOM4J解析XML实例 #### DOM解析XML DOM(Document Object Model)是一种树形结构的数据模型,用于表示XML或HTML文档。它允许程序在内存中加载整个文档,并通过提供的API来访问和修改文档中的任何...

    dom4j-xml.rar_DOM4J

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高性能的方式来解析、...同时,DOM4J与其他Java XML库相比,如JDOM和Java内置的DOM API,具有更简洁的API和更好的性能,因此在Java社区中被广泛使用。

    用DOM SAX JDom dom4j 对xml文档解析实例

    本文将深入探讨DOM、SAX、JDom和dom4j四种流行的Java XML解析器,以及它们在处理XML文档时的特点和用法。 1. DOM(Document Object Model) DOM是W3C推荐的一种解析XML的标准方法。它将XML文档表示为一个树形结构,...

    sax,dom,jdom,dom4j之xml解析大荟萃

    在Java中,有多种XML解析器供开发者选择,包括SAX(Simple API for XML)、DOM(Document Object Model)、JDOM和DOM4J。这四种解析方式各有特点,适用于不同的场景。下面我们将详细探讨它们的原理、优缺点以及应用...

    dom4j & jdom 的jar包

    4. **文档模型**:DOM4J提供了一个强大的文档模型,可以方便地创建、修改和遍历XML结构。 5. **性能优化**:DOM4J在内存管理和性能方面进行了优化,尤其在处理大型XML文件时表现优秀。 JDOM,全称为Java Document ...

    dom4j---xml解析jar包

    - **JDOM**:另一个Java XML库,设计目标类似DOM4J,但DOM4J在功能和性能上更胜一筹。 - **StAX**:流式API,性能较好,但灵活性不如DOM4J。 **总结** DOM4J作为Java中处理XML的首选库,因其易用性和高效性而受到...

    操作xml的方式: SAX, DOM, JDOM , DOM4J的比较

    处理XML文档有多种方式,其中最常见的是SAX(Simple API for XML)、DOM(Document Object Model)、JDOM和DOM4J。下面我们将详细探讨这四种方法。 1. DOM(Document Object Model) DOM是W3C制定的一个标准,它...

    dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中

    DOM4J提供了解析后的XML文档的遍历和操作接口。通过`Element`、`Attribute`等接口,我们可以轻松找到目标节点并进行修改。例如,如果要修改根元素`&lt;root&gt;`的某个子元素`&lt;child&gt;`的值,可以这样做: ```java ...

Global site tag (gtag.js) - Google Analytics