用到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解析XML,然后通过jaxen创建XPath对象并执行查询。查询结果可以是元素、属性或其他XML节点,根据需要进行进一步处理。 例如,以下代码展示了如何使用dom4j和jaxen解析XML...
### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...
在提供的“analysis_xml”项目中,很可能包含了一个示例,演示了如何使用dom4j的SAX解析器解析XML文件。这样的测试项目有助于理解SAX解析的工作原理,并在实际开发中应用。 总结起来,dom4j库提供了DOM和SAX两种XML...
在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行的、功能强大的开放源代码库。这个库不仅简化了XML处理,还提供了XPath和XSLT的支持,使其成为Java开发者处理XML的首选工具之一。 **...
以下是如何使用DOM4j解析XML: 1. 引入DOM4j库(如:dom4j-1.6.1.jar)。 2. 创建DocumentFactory实例。 3. 使用DocumentFactory的read()方法读取XML文件,得到Document对象。 4. 使用Document对象提供的方法(如...
4. **XPath支持**:DOM4J支持XPath表达式,这允许开发者根据XPath查询XML文档中的特定节点,极大提高了代码的可读性和效率。 5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析...
在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...
使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
使用DOM4J解析XML,首先需要导入DOM4J库,然后使用`DocumentHelper`类的`parseText()`或`parse()`方法。比如: ```java Document doc = DocumentHelper.parseText(new File("testxml.xml").getText()); Element root...
本篇文章将深入探讨如何使用Dom4j,一个流行的Java库,结合XPath来解析XML文件中的路径表达式,同时阐述相对路径和绝对路径的匹配原则。 首先,我们要了解Dom4j库。Dom4j是一个灵活且高效的处理XML的Java库,它提供...
"Dom4j 生成 XML 和解析 XML" Dom4j 是一个 Java 库,用于处理 XML 文档。它提供了生成和解析 XML 文档的功能。在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j ...
2. **XML解析**:DOM4J支持多种解析方式,包括SAX(Simple API for XML)和DOM。SAX是基于事件的解析,适用于处理大文件;DOM则将整个XML文档加载到内存,适合小规模或内存允许的情况。DOM4J还提供了StAX(Streaming...
以下是一个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是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...
在Java中,解析XML文件是常见的任务,通常有DOM(Document Object Model)和DOM4J两种方式。下面我们将详细探讨这两种解析方法。 DOM解析方式是将整个XML文件加载到内存中,形成一棵DOM树,每个节点代表XML文档的一...
**DOM4J解析XML** DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效且功能丰富的API,使得XML的读取、创建、修改和查询变得简单易行。DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与...
### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J是一个Java库,用于处理XML文档。它的设计目标是为了提供一个简单、易于使用的API来处理XML文件,同时保持性能上的优势。与Java标准库中的DOM实现相比,DOM4J...