详解Java解析XML的四种方法

http://developer.51cto.com/art/200903/117512.htm

 

1、DOM,基于XML文档树结构的解析

使用树结构解析,解析前整个文档装入内存,占用内存大,但适合随机访问。

 

2、SAX,基于事件流的解析

事件驱动型,顺序读取,不需一次装入,遇到文件开头及结束、标签开头及结束将触发事件,用户在其回调事件中写入处理代码,但因为无状态,事件过后若没保存数据那么数据就丢了,适合顺序访问。

 

3、DOM4J 

DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。

 

4、JDOM 

为减少DOM、SAX的编码量,出现了JDOM;优点:20-80原则,极大减少了代码量。使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。

 

  /** DOM4J Demo
     * 循环获取map对象
     * @param strNodeName
     * @param objParseElement
     * @return
     */
	public static Map getMapByXML(Element objRoot) {
		Map<String, Object> objWork = new HashMap<String, Object>();
		Iterator<Map> itWork = (Iterator<Map>) objRoot.elementIterator();
		while (itWork.hasNext()) {
			Element elWork = (Element) itWork.next();
			String nodeNameWork = elWork.getQualifiedName();
			if(elWork.isTextOnly()){
				//叶子节点
				objWork.put(nodeNameWork, elWork.getText());
			}else{
				// 子节点
				List lstWork = (List) objWork.get(nodeNameWork);
				if (lstWork == null) {
					lstWork = new ArrayList();
				}
				lstWork.add(getMapByXML(elWork));
				objWork.put(nodeNameWork, lstWork);
			}
		}
		return objWork;
	}

 

 

 

 

 

【】

你可能感兴趣的:(xml)