`
xu283900277xiu
  • 浏览: 39028 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类

dom4j解析、修改、生成xml文件

XML 
阅读更多
项目中用到XML的地方非常普遍,XML也不是一种新的技术。但经常遇到朋友们问如何操作XML文件。所以写一个小例子,代码很乱。写出来和大家一起交流学习

1、生成XML
public void createApplicationConfigXML(){
         //建立document对象
		 try {
				 Document document = DocumentHelper.createDocument();
				 Element root = document.addElement("root");//添加文档根
				 root.addComment("这个一个注释");//加入一行注释
				 Element request = root.addElement("request"); //添加root的子节点
				 request.addAttribute("type", "cat");
				 request.addAttribute("flow", "tong");
				 request.addAttribute("time", "2009");
				 Element pro = request.addElement("pro");
				 pro.addAttribute("type", "att");
				 pro.addAttribute("name", "附件");
				 pro.addText("测试哈子");
				 
				 Element cd = request.addElement("pro");
				 cd.addAttribute("type", "cd");
				 cd.addAttribute("name", "特殊字符过滤");
				 cd.addCDATA("特殊字符");
				 
	             //输出全部原始数据,在编译器中显示
				 OutputFormat format = OutputFormat.createPrettyPrint();
				 format.setEncoding("GBK");//根据需要设置编码
				 XMLWriter writer = new XMLWriter(System.out, format);
				 document.normalize();
				 writer.write(document);  
				 writer.close();
				 // 输出全部原始数据,并用它生成新的我们需要的XML文件
				 XMLWriter writer2 = new XMLWriter(new FileWriter(new File(
	             "test.xml")), format);
				 writer2.write(document); //输出到文件
				 writer2.close();
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

-----------------------------------------------------------------
下面是解析和修改XML
XML文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<root>
	<request type="Pending" flowType="GENERAL" flowName="报销流程"
		docId="185647" flowId="16409" nodeName="报销人确认" wikId="58288"
		sendId="1210040" userId="1210040" createDate="2009-12-03"
		title="费用报销 " flowCreaterId="1210040" nodeType="1"
		bosTime="2009-12-03 09:36:15">
		<pro type="att"></pro>
		<pro type="textarea" name="OP_bxryj" title="处理意见" need="true"></pro>
	</request>
</root>

修改
	public String getApplcationConfigFromXMLTest(){
		String value = "";
		try {
			SAXReader sax = new SAXReader();
			Document xmlDoc = sax.read(new File(this.UBSSDIC_PATH));
			Element root = xmlDoc.getRootElement();//根节点
			Iterator it = root.elementIterator();
			while(it.hasNext()){
				Element ele = (Element)it.next();
				Attribute attribute = ele.attribute("type");
				if(attribute.getStringValue().equals("Pending")){
					attribute.setValue("sendread2");//修改属性节点的值
				}
	
				Attribute flowType = ele.attribute("flowType");
				flowType.detach();//删除某个属性
				
				ele.addAttribute("type", "Pending");//添加一个属性节点
			}
			Element new_cdata = root.addElement("new_cdata");//添加一个元素
			new_cdata.addCDATA("tst&ree");
			
			Element new_ele = root.addElement("new_ele");//添加一个元素
			new_ele.addText("33434343");

			Element obj = (Element)root.selectObject("//pro[@type='att']");//根据XPath查找元素
			obj.setText("测试dddddd");//修改元素的值 即text节点
              //输出全部原始数据,在编译器中显示
	           OutputFormat format = OutputFormat.createPrettyPrint();
	           format.setEncoding("GBK");
	           XMLWriter writer = new XMLWriter(System.out, format);
	           writer.write(xmlDoc);  
	           writer.close();
	           // 输出全部原始数据,并用它生成新的我们需要的XML文件
	           XMLWriter writer2 = new XMLWriter(new FileWriter(new File(
	             "test.xml")), format);
	           writer2.write(xmlDoc); //输出到文件
	           writer2.close();
		} catch (DocumentException e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		}catch(IOException e){
			e.printStackTrace();
		}
		return value ;
	}

解析
	public void parseApplicationConfigXML(){
		try {
			SAXReader sax = new SAXReader();
			Document xmlDoc = sax.read(new File("E:\\20090316HPS\\Dom4jTest\\t.xml"));
			Element root = xmlDoc.getRootElement();//根节点
			Iterator it = root.elementIterator("request");
			while(it.hasNext()){
				Element request = (Element)it.next();
				System.out.println(request.getName());
				System.out.println(request.attributeValue("type"));
				System.out.println(request.attributeValue("flow"));
				System.out.println(request.attributeValue("time"));
				
			}
			System.out.println("-------------------------------------------");
			List list = root.selectNodes("//pro");
			for(int i = 0; i < list.size(); i++){
				Element pro = (Element)list.get(i);
				System.out.println(pro.getName());
				System.out.println(pro.attributeValue("type"));
				System.out.println(pro.attributeValue("name"));
				System.out.println(pro.getText());
				System.out.println("+++++++++++++++++++++++++++++++++");
			}
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
1
0
分享到:
评论
1 楼 小牛红 2014-05-16  

相关推荐

    dom4j解析及生成 xml代码收集

    压缩包中的`dom4j生成xml文件.txt`可能包含了使用DOM4J生成XML文件的代码片段。通常,这会包括创建`Document`对象,添加元素,设置属性,以及将文档写入文件的相关步骤。实际代码可能如下: ```java import org....

    dom4j解析xml详解

    - **数据交换**: 在不同的系统之间交换XML格式的数据,DOM4J可以轻松解析和生成XML文档。 - **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP...

    dom4j解析xml文件的压缩包

    5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...

    Dom4j解析和生成XML文档

    总结,DOM4J是Java开发中处理XML的得力工具,无论是解析还是生成XML文档,都提供了高效且灵活的解决方案。通过深入理解DOM4J的API和使用方法,开发者能够更好地管理和操作XML数据,提高项目的可维护性和灵活性。在...

    dom4J生成xml、解析xml、生成xml文件实例

    **dom4J生成和解析XML文件** DOM4J是一个强大的Java XML API,它不仅提供了DOM、SAX和JDOM等接口的实现,还提供了一种更简单、更灵活的方式来处理XML文档。这篇博客()可能详细介绍了如何使用DOM4J来生成和解析XML...

    dom4j 解析写入xml

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

    利用Dom4j生成XML和解析XML

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

    Dom4J生成XML的完整方法希望大家能用到

    ### Dom4J生成XML的完整方法详解 在Java开发领域,处理XML文档是常见的需求之一。Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库...

    java dom4j中生成xml文件

    在DOM4J中生成XML文件主要涉及以下几个关键概念和步骤: 1. **Document对象**:这是DOM4J的核心,表示整个XML文档。你可以通过`DocumentFactory`创建一个空的`Document`对象,然后添加元素、属性等。 2. **Element...

    java dom4j解析xml

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

    通过Dom4j创建和读取xml文件下载

    在Java编程中,DOM4J是一个非常流行的XML处理库,它提供了一套强大的API来创建、解析和操作XML文档。本教程将详细讲解如何利用DOM4J进行XML文件的创建和读取。首先,我们需要了解DOM4J的核心概念,如Element、...

    dom4j解析xml

    DOM4J作为一个强大的XML处理库,提供了丰富的API,使得XML的解析、操作和生成变得更加简单。无论是处理小规模的XML文档还是大型XML数据,DOM4J都能提供高效且易于使用的解决方案。通过阅读和理解`Test.java`中的代码...

    dom4j解析xml,利用反射机制

    在这个项目中,我们利用DOM4J来解析XML文件,并通过Java的反射机制将解析出的信息存储到特定的类中。 首先,我们需要了解XML的基本概念。XML(Extensible Markup Language)是一种标记语言,常用于数据交换和结构化...

    dom4j解析xml文件jar包

    DOM4J是一个强大的Java...总结来说,DOM4J是一个功能强大、灵活的XML处理工具,它提供了丰富的功能来解析、操作和生成XML文档,广泛应用于各种Java项目中。其高效、易用的特性使其成为Java开发者处理XML的首选库之一。

    使用dom4j创建一个xml文件刘宝宝版

    在Java编程中,DOM4J是一个非常流行的XML处理库,它提供了丰富的API来操作XML文档,包括创建、解析、修改和查询XML。下面我们将详细介绍如何使用DOM4J来创建一个XML文件。 首先,让我们了解DOM4J的基本概念。DOM4J...

    XML解析技术DOM4J解析

    ### XML解析技术DOM4J解析 #### DOM4J解析概览 DOM4J是一种高性能、功能强大且极其易于使用的Java XML API,它最初是作为JDOM的一个智能分支发展起来的,自2000年下半年开始持续开发。DOM4J不仅在功能上超越了基本...

    DOM4J解析XML数据

    1. **解析XML文件**:使用DOM4J的`DocumentFactory`创建解析器,如`SAXReader`,然后读取XML文件,生成一个`Document`对象。 2. **访问XML结构**:通过`Document`对象,可以获取根元素(`Element`),进一步遍历...

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

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

Global site tag (gtag.js) - Google Analytics