`

Dom4j根据条件解析xml

    博客分类:
  • xml
阅读更多

用到dom4j.jar

工具类:

import java.io.File;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.DocumentHelper;
/**
 * 针对XML的解析
 * 筛选符合条件的element
 * 条件:elementName、attrName、attrValue
 * */
public class XMLUtil {
	public static String elementName;
	public static String attrName;
	public static String attrValue;

	/**
	 * 解析文件,获得符合条件的element
	 * */
	public static List<Element> interceptElements(File file) throws DocumentException{
		if (elementName==null || "".equals(elementName.trim())) {
			return null;
		}
		if(attrName==null || "".equals(attrName.trim()) || 
			attrValue==null || "".equals(attrValue.trim())){
			attrName = "";
			attrValue = "";
		}
		SAXReader reader = new SAXReader();
		Document doc = reader.read(file);
		Element root = doc.getRootElement();
		List<Element> elements = new ArrayList<Element>();
		parse(elements,root);
		return elements;
	}
	/**
	 *解析字符串,获得符合条件的element
	 * */
	public static List<Element> interceptElements(String xml) throws DocumentException{
		if (elementName==null || "".equals(elementName.trim())) {
			return null;
		}
		if(attrName==null || "".equals(attrName.trim()) || 
			attrValue==null || "".equals(attrValue.trim())){
			attrName = "";
			attrValue = "";
		}
		Document doc = DocumentHelper.parseText(xml);
		Element root = doc.getRootElement();
		List<Element> elements = new ArrayList<Element>();
		parse(elements,root);
		return elements;
	}
	/**
	 * 解析输入流,获得符合条件的element
	 * */
	public static List<Element> interceptElements(InputStream in) throws DocumentException{
		if (elementName==null || "".equals(elementName.trim())) {
			return null;
		}
		if(attrName==null || "".equals(attrName.trim()) || 
			attrValue==null || "".equals(attrValue.trim())){
			attrName = "";
			attrValue = "";
		}
		SAXReader reader = new SAXReader();
		Document doc = reader.read(in);
		Element root = doc.getRootElement();
		List<Element> elements = new ArrayList<Element>();
		parse(elements,root);
		return elements;
	}
	/**
	 * 递归扫描整个xml
	 * */
	private static void parse(List<Element> list,Element element){
		List<Element> childs = element.elements();
		for (int i = 0; i < childs.size();i++) {
			Element e = childs.get(i); 
			if (elementName.equals(e.getName())) {
				if("".equals(attrName)){
					list.add(e);
				}else if(attrValue.equals(e.attributeValue(attrName))){
					list.add(e);
				}
				continue;
			}
			if (e.elements().size()>0) {
				parse(list,e);
			}
		}
	}
}

 testDemo:我解析的是html中的hidden控件

public class XMLUtilDemo {
	public static void main(String[] args) {
			XMLUtil.elementName = "input";
			XMLUtil.attrName = "type";
			XMLUtil.attrValue = "hidden";
			
			List<Element> elements = null;
			try {
				elements = XMLUtil.interceptElements(XMLUtilDemo.class.getResourceAsStream("../domTest.html"));
			} catch (DocumentException e) {
				System.out.println(e.getMessage());
			}
			
			if (elements == null) 
				return;
			
			for (Element element : elements) {
				System.out.println(element.asXML());
				//System.out.println(element.attributeValue("name")+"= "+element.attributeValue("value"));
			}
	}
}

 

分享到:
评论

相关推荐

    使用dom4j和jaxen解析xml

    - **dom4j+jaxen操作XML**:首先使用dom4j解析XML,然后通过jaxen创建XPath对象并执行查询。查询结果可以是元素、属性或其他XML节点,根据需要进行进一步处理。 例如,以下代码展示了如何使用dom4j和jaxen解析XML...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    dom4j下sax解析xml

    在提供的“analysis_xml”项目中,很可能包含了一个示例,演示了如何使用dom4j的SAX解析器解析XML文件。这样的测试项目有助于理解SAX解析的工作原理,并在实际开发中应用。 总结起来,dom4j库提供了DOM和SAX两种XML...

    dom4j---xml解析jar包

    在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行的、功能强大的开放源代码库。这个库不仅简化了XML处理,还提供了XPath和XSLT的支持,使其成为Java开发者处理XML的首选工具之一。 **...

    分别使用DOM和DOM4j解析XML文件

    以下是如何使用DOM4j解析XML: 1. 引入DOM4j库(如:dom4j-1.6.1.jar)。 2. 创建DocumentFactory实例。 3. 使用DocumentFactory的read()方法读取XML文件,得到Document对象。 4. 使用Document对象提供的方法(如...

    dom4j解析xml文件的压缩包

    4. **XPath支持**:DOM4J支持XPath表达式,这允许开发者根据XPath查询XML文档中的特定节点,极大提高了代码的可读性和效率。 5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析...

    dom4j 解析(读取) xml 节点数据

    在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...

    使用 dom4j 解析 XML

    使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml

    dom4j 解析写入xml

    1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件

    dom,dom4j,sax 解析xml文件实例

    使用DOM4J解析XML,首先需要导入DOM4J库,然后使用`DocumentHelper`类的`parseText()`或`parse()`方法。比如: ```java Document doc = DocumentHelper.parseText(new File("testxml.xml").getText()); Element root...

    Dom4j结合XPath解析XML文件路径表达式

    本篇文章将深入探讨如何使用Dom4j,一个流行的Java库,结合XPath来解析XML文件中的路径表达式,同时阐述相对路径和绝对路径的匹配原则。 首先,我们要了解Dom4j库。Dom4j是一个灵活且高效的处理XML的Java库,它提供...

    利用Dom4j生成XML和解析XML

    "Dom4j 生成 XML 和解析 XML" Dom4j 是一个 Java 库,用于处理 XML 文档。它提供了生成和解析 XML 文档的功能。在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j ...

    dom4j解析XML所需jar包

    2. **XML解析**:DOM4J支持多种解析方式,包括SAX(Simple API for XML)和DOM。SAX是基于事件的解析,适用于处理大文件;DOM则将整个XML文档加载到内存,适合小规模或内存允许的情况。DOM4J还提供了StAX(Streaming...

    Java使用sax、dom、dom4j解析xml文档

    以下是一个DOM4J解析XML的简单示例: ```java import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class Dom4jExample { public static void main(String[] args) {...

    java dom4j解析xml

    Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...

    使用dom4j 和本地dom 解析xml 文件

    在Java中,解析XML文件是常见的任务,通常有DOM(Document Object Model)和DOM4J两种方式。下面我们将详细探讨这两种解析方法。 DOM解析方式是将整个XML文件加载到内存中,形成一棵DOM树,每个节点代表XML文档的一...

    DOM4J 解析XML

    **DOM4J解析XML** DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效且功能丰富的API,使得XML的读取、创建、修改和查询变得简单易行。DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与...

    dom4j解析xml

    ### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J是一个Java库,用于处理XML文档。它的设计目标是为了提供一个简单、易于使用的API来处理XML文件,同时保持性能上的优势。与Java标准库中的DOM实现相比,DOM4J...

Global site tag (gtag.js) - Google Analytics