`
forge
  • 浏览: 23112 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Dom4j递归删除

    博客分类:
  • XML
阅读更多

递归查找XML节点,如果节点属性符合要求,保留该节点以及所有父亲节点;如果节点以及子节点都不符合要求,全部删除。

 

package test.mytest;

import java.util.List;

import org.apache.ibatis.io.Resources;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class XMLHandle {

	private boolean walkChildElement = true;
	private boolean exclusiveElement = true;
	private boolean hasElement=true;

	public String  getXMLString(List<String> datalist) throws Exception {

		

		SAXReader saxReader = new SAXReader();
		Document document = saxReader.read(Resources
				.getResourceAsStream("list.xml"));

		Element tElement = (Element) document.selectSingleNode("/root");
		treeWalk(tElement, datalist);
		return tElement.asXML();
		

	}

	private void treeWalk(Element element, List<String> datalist) {

		for (int i = 0, size = element.nodeCount(); i < size; i++) {
			walkChildElement = true;
			exclusiveElement = true;
			Node node = element.node(i);
			if (node instanceof Element) {

				Element childelement = (Element) node;
				
				boolean hasContent = node.hasContent();

				System.out.println(childelement.attribute("i").getValue());
				for (String str : datalist) {
					if (childelement.attribute(0).getValue().equals(str)) {

						walkChildElement = false;
						exclusiveElement = false;

					}
				}
				if (walkChildElement && hasContent) {
					treeWalk((Element) node, datalist);
				}
				if (exclusiveElement && !hasContent) {
					System.out.println("!hasContent:  "
							+ childelement.attribute("i").getValue());
					element.remove(childelement);
					i--;
				}

			}
		}
		hasElement = element.hasContent();
		if (element.isTextOnly()) {
			hasElement = false;
		}
		if (!hasElement) {
			//System.out.println("content: " + element.attribute("i").getValue());
			if(!element.isRootElement()){
				element.getParent().remove(element);
			}
			
		}

	}

}

 

package test.mytest;

import java.util.ArrayList;
import java.util.List;

public class Test {

	public static void main(String[] args) throws Exception {
		List<String> datalist = new ArrayList<String>();
		datalist.add("item1");
		datalist.add("item2");
		datalist.add("item3");
		datalist.add("item4");
		XMLHandle xmlHandle=new XMLHandle();
		String xmlString=xmlHandle.getXMLString(datalist);
		System.out.println(xmlString);
	}
}

 

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <n i="o1">
        <n i="one1">
            <n i="item1"></n>
            <n i="item5"></n>
            <n i="item6"></n>
            <n i="item7"></n>
        </n>
    </n>
    <n i="o2">
        <n i="one2">
            <n i="item8"></n>
            <n i="item9"></n>
            <n i="item10"></n>
            <n i="item11"></n>
        </n>
    </n>
    <n i="o3">
        <n i="item3">
            <n i="item8"></n> 
            <n i="item9"></n>
            <n i="item10"></n>
            <n i="item11"></n>
        </n>
    </n>
     <n i="o4">
        <n i="item">
            <n i="item8"></n>
            <n i="item4"></n>
            <n i="item10"></n>
            <n i="item11"></n>
        </n>
    </n>

</root>

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    dom4j从基础到精通

    解析 XML 文件后,可以通过递归遍历 Document 对象构建 dom4j 树。 2. 获取节点 `Element` 对象提供了多种获取子节点的方法,如 `elementIterator()`, `elements()`, `childElement()` 等。 3. 获取属性 通过 `...

    dom4j-1.6.1及相关使用示例

    **DOM4J详解及其在Java中的应用** DOM4J是一个非常优秀的Java XML API,它提供了丰富的功能,使得处理XML文件变得简单而高效。这个库不仅仅是一个DOM实现,它还包含了SAX和DOM的支持,以及一些其他的特性,如XPath...

    dom4j--java框架技术

    **DOM4J——Java框架技术详解** DOM4J是一个强大的Java XML处理库,它提供了全面的XML解决方案,包括解析、生成、操作和序列化XML文档。DOM4J因其易用性和高性能,在Java开发者中广受欢迎,是许多Java框架如Spring...

    dom4j解析xml嵌套格式

    **DOM4J解析XML嵌套格式** XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档结构定义等领域。在Java编程中,DOM4J是一个非常流行的XML处理库,它提供了丰富的API来...

    dom4j读写xml

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而灵活的API,使得XML的读取、创建、修改以及写入变得容易。在本文中,我们将深入探讨DOM4J库在XML处理中的核心概念和使用方法。 1. **DOM4J的基本概念...

    Dom4j 使用指南.rar

    **Dom4j 使用指南** Dom4j 是一个非常流行的Java库,用于处理XML文档。它提供了灵活、高效的方式来解析、创建、操作XML内容。对于学习XML的开发者来说,Dom4j是一个不可多得的工具,因为它的API简洁易用,功能强大...

    dom4j官方jar包+API

    DOM4J提供了便捷的方法来获取、设置和删除属性。 3. **文本(Text)**:XML文档中的文本内容由Text对象表示,可以通过DOM4J方便地访问和修改。 4. **文档(Document)**:整个XML文档由Document对象表示,它是所有元素...

    dom4j xml解析

    2. 创建XML:DOM4J提供方便的方法来创建新的XML文档,或者在现有文档中添加、删除和修改元素、属性等。 3. XPath查询:DOM4J支持XPath表达式,可以快速定位XML文档中的特定部分。 4. 转换:DOM4J可以将XML文档转换为...

    dom4j读取xml

    4. **强大的XML文档操作**:DOM4J支持动态创建XML文档,以及对已有文档进行修改、删除和添加元素。 **XML解析的基本流程** 1. **解析XML文件**:首先,使用DOM4J的`DocumentBuilderFactory`创建`DocumentBuilder`...

    DOM4jAPI文档

    DOM4j是一个流行的Java库,专门用于处理XML文档。它提供了灵活且高性能的方式来解析、创建、操作和遍历XML结构。DOM4j API文档是学习和掌握这个库的关键资源,包含详细的方法解释、示例代码以及最佳实践。下面将深入...

    dom4j操作xml文件

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高性能的方式来解析、创建、更新和操作XML。在本文中,我们将深入探讨如何利用DOM4J进行XML文件的读取、写入和修改操作。 一、XML基础 XML...

    Dom4J解析XML

    **标题解析:** "Dom4J解析XML" 这个标题明确指出了我们要讨论的核心技术——使用Dom4J库来解析XML文档。Dom4J是一个Java库,它提供了丰富的API来处理XML,包括读取、写入、修改以及查询XML文档。在本文中,我们将...

    使用递归和dom遍历dom树形结构

    4. **递归调用**: 当遇到元素节点时,通过递归调用`node`方法来处理其子节点列表。 #### 结论 通过递归遍历DOM树形结构是一种有效且直观的方式,可以确保所有节点被正确地访问和处理。上述Java示例展示了如何实现...

    xml修改工具 dom4j

    在Java编程中,处理XML文档时,dom4j是一个非常流行的库,它提供了强大的XML处理功能,包括读取、创建、修改和解析XML文档。本文将深入探讨dom4j库在XML修改中的应用。 首先,dom4j库的核心概念是Document对象,它...

    利用DOM4J读取XML的实例

    DOM4J是Java中一个流行的XML处理库,它提供了丰富的API来操作XML文档,包括读取、写入、修改和遍历XML文档。在这个实例中,我们将深入探讨如何利用DOM4J库来读取XML文件。 首先,我们需要了解DOM4J的基本概念。DOM4...

    mysql.rar ,dom4j

    1. 引入DOM4j库:在Java项目中,你需要添加DOM4j的依赖,通常通过Maven或Gradle来管理。 2. 创建SAXReader对象:这是用于读取XML文件的类,可以通过其read方法加载XML文档。 3. 解析XML:SAXReader会返回一个...

    xml-dom4j解析工具类

    这个“xml-dom4j解析工具类”显然是为了简化XML文档操作而设计的,它利用DOM4J库来处理XML数据。 首先,让我们详细了解一下DOM4J的核心概念。DOM4J提供了一个灵活的API,以树形结构表示XML文档。在DOM(Document ...

    在java中使用dom4j解析xml(示例代码)

    对于更复杂的XML处理需求,DOM4J提供了丰富的API,包括XPath查询、元素和属性的添加、删除、修改等。 总的来说,DOM4J是Java开发中处理XML文档的一个强大工具,它的易用性和灵活性使得开发者可以更专注于业务逻辑,...

    java DOM4J 读取XML实例代码

    如果你需要对XML进行更复杂的操作,如添加、删除或修改元素和属性,DOM4J库提供了丰富的API来支持这些功能。例如,你可以使用`Element`对象的方法来访问和修改其子元素、属性或者文本内容。同时,DOM4J也支持XPath...

    java + dom4j.jar提取xml文档内容

    5. 修改XML:DOM4J也支持对XML文档进行修改,包括添加、删除和更新元素及属性。例如,添加新元素: ```java Element newElement = DocumentHelper.createElement("newElement"); newElement.setText("New Content...

Global site tag (gtag.js) - Google Analytics