`
Luob.
  • 浏览: 1590203 次
  • 来自: 上海
社区版块
存档分类
最新评论

JDOM 解析 XML文件

    博客分类:
  • XML
阅读更多
JDOM 读取 解析 修改 删除 XML文件

加入
D:\Soft\jar\jdom.jar


package com.itheima.xml;

import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;
import java.util.List;

import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class TextJDOMparseXML {//操作使用JDOM解析XML文件的类

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String fileName="F:/test1.xml";
		TextJDOMparseXML jdomXml=new TextJDOMparseXML();
		System.out.println("===============1.运用jdom创建XML文件");
		if(jdomXml.createXMLFile(fileName, "GB2312")==1)
			System.out.println("运用JDOM创建XML文件成功!");
		else
			System.out.println("运用JDOM创建XML文件失败!");
		System.out.println("===============2.运用JDOM读取XML文件");
		jdomXml.read(jdomXml.getDocument(fileName));
		System.out.println("===============3.修改XML内容,输出修改后的文档");
		jdomXml.update(fileName, "rongshu", "liushu");
		System.out.println("===============4.删除编号为002的节点,输出修改后的文件");
		jdomXml.delete(fileName, "002");
		
	}
	
	//生成一个新的Document  
	public Document createDocument(){
		Document document=new Document();
		return document;
	}
	//创建一个节点
	public Element createElement(String paramName,String paramValue){
		Element element=new Element(paramName);
		element.setText(formatTextForXML(paramValue));
		return element;
	}
	//创建 XML文件
	public int createXMLFile(String fileName,String encoding){
		int returnValue=0;
		Document document=createDocument();
		Element treesElement=createElement("trees", null);
		Element treeElement=new Element("tree");
		treeElement.setAttribute("id","001");
		treeElement.setAttribute("name","rongshu");
		
		Element typeElement=new Element("type");
		typeElement.setText("style");
		typeElement.setAttribute("id","xiaoshu");
		treeElement.addContent(typeElement);  //添加 子节点
		
		
		Element descElement=new Element("description");
		descElement.setText(formatTextForXML("It is a big tree"));
		treeElement.addContent(descElement);
		
		treesElement.addContent(treeElement);
		
		Element tree1Element=new Element("tree");
		tree1Element.setAttribute("id","002");
		tree1Element.setAttribute("name","yangshu");
		Element type1Element=new Element("type");
		type1Element.setText("style");
		type1Element.setAttribute("id","dashu");
		tree1Element.addContent(type1Element);
		Element desc1Element=new Element("description");
		desc1Element.setText(formatTextForXML("The tree grows taller from day to day"));
		tree1Element.addContent(desc1Element);
		treesElement.addContent(tree1Element);
		
		
		Element tree2Element=new Element("tree");
		tree2Element.setAttribute("id","003");
		tree2Element.setAttribute("name","songshu");
		Element desc2Element=new Element("description");
		desc2Element.setText(formatTextForXML("The tree is very beautiful"));
		tree2Element.addContent(desc2Element);
		treesElement.addContent(tree2Element);
		
		Element flowerElement=new Element("flower");
		flowerElement.setText("rose");
		treesElement.addContent(flowerElement);
		
		document.addContent(treesElement);
		try {
			saveFile(fileName,document,encoding);
			returnValue=1;
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("创建XML文件失败:"+e.getMessage());
		}
		return returnValue;
		
	}
	//读取xml
	public void read(Document document){
		try {
			Format format=Format.getPrettyFormat(); 
			format.setEncoding("GB2312");
			
			XMLOutputter xmlOutputter=new XMLOutputter(format);
			xmlOutputter.output(document, System.out);
		} catch (Exception e) {
			System.out.println("读取XML文件失败:"+e.getMessage());
		}
	}
	//修改 xml文档节点
	public int update(String fileName,String oldName,String newName){
		int returnValue=0;
		Document document=getDocument(fileName);
		List list=document.getRootElement().getChildren();
		for (int i = 0; i < list.size(); i++) {
			Element element=(Element)list.get(i);
			Attribute attribute=element.getAttribute("name");
			if(attribute!=null){
				if(attribute.getValue().equals(oldName)){
					attribute.setValue(newName);
				}
			}
		}
		
		list=document.getRootElement().getChildren("flower");
		Iterator iter=list.iterator();
		if(iter.hasNext()){
			Element el=(Element)iter.next();
			el.setText("lily");
			Element date=new Element("date");
			date.setText("2009-04-10");
			date.setAttribute("type","calendar");
			el.addContent(date);
		}
		
		try {
			showFile(fileName,document);
			returnValue=1;
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("修改XML文件出错:"+e.getMessage());
		}
		
		return returnValue;
		
		
	}
	//删除XML 节点
	public boolean delete(String fileName,String id){
		boolean returnVlalue=false;
		Document doc=getDocument(fileName);
		Element root=doc.getRootElement();
		List list=root.getChildren("tree");
		for (int i = 0; i < list.size(); i++) {
			Element element=(Element)list.get(i);
			if (element.getAttribute("id").getValue().equals(id)) {
				root.removeContent(element);
			}
		}
		try {
			showFile(fileName, doc);
			returnVlalue=true;
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return returnVlalue;
				
	}
	
	private void showFile(String fileName, Document document) {
		// TODO Auto-generated method stub
		Format format=Format.getPrettyFormat();
		format.setEncoding("GB2312");
		format.setIndent(" ");
		try {
			XMLOutputter xmlOutputter=new XMLOutputter(format);
			FileWriter fileWriter=new FileWriter(fileName);
			xmlOutputter.output(document, fileWriter);
			xmlOutputter.output(document, System.out);
		} catch (Exception e) {
			System.out.println("XML文件输出到控制台出错:"+e.getMessage());
		}
	}

	private Document getDocument(String fileName) {
		// TODO Auto-generated method stub
		Document document=null;
		try {
			SAXBuilder saxBuilder=new SAXBuilder();
			document=saxBuilder.build(new File(fileName));
		} catch (Exception e) {
			// TODO: handle exception
			System.out.println("载入失败:"+e.getMessage());
			return null;
		}
		return document;
	}

	private boolean saveFile(String fileName, Document document, String encoding) {
		// TODO Auto-generated method stub
		Format format=Format.getPrettyFormat();
		if(encoding!=null){
			format.setEncoding(encoding);
		}
		format.setIndent(" "); //设置xml文件的缩进
		try {
			XMLOutputter xmlOutputter=new XMLOutputter(format);
			FileWriter fileWriter=new FileWriter(fileName);
			xmlOutputter.output(document, fileWriter);
		} catch (Exception e) {
			System.out.println("保存文件出错:"+e.getMessage());
			return false;
		}
		return true;
	}

	private String formatTextForXML(String sourceString) {
		// TODO Auto-generated method stub
		if (sourceString==null) {
			return null;
		}
		int stLen=0;
		StringBuffer reString= new StringBuffer();
		String deString="";
		stLen=sourceString.length();
		for (int i = 0; i < stLen; i++) {
			char ch=sourceString.charAt(i);
			switch (ch) {
			case '<':
				deString="<";
				break;
			case '>':
				deString=">";
				break;
			case '\"':
				deString="\"";
				break;
			case '&':
				deString="&";
				break;
			case 13:
				deString="\n";
				break;
			default:
				deString=""+ch;
				break;
			}
			reString.append(deString);
		}
		return reString.toString();
	}	
	
	
}


1
0
分享到:
评论

相关推荐

    使用JDOM解析XML文件

    本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...

    用jdom解析xml文件

    在这个例子中,我们将深入探讨如何使用JDOM解析XML文件,并进行遍历与构建。 首先,我们需要了解JDOM的基本概念。JDOM主要由三部分构成:SAXBuilder用于从XML源构建DOM树,Element代表XML文档的元素,Attribute代表...

    jdom解析xml文件

    **JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是一个流行的选择来解析和操作...

    利用JDOM解析xml文件

    本篇文章将深入探讨如何利用JDOM解析XML文件,并基于XML中的类名生成相应的对象。 首先,我们需要理解JDOM的基本概念。JDOM提供了一组Java对象来表示XML文档,包括Element(元素)、Attribute(属性)、Text(文本...

    java利用jdom解析xml文件

    本篇文章将深入探讨如何利用JDOM解析XML文件,以及在这个过程中涉及的关键知识点。 首先,我们需要了解XML(Extensible Markup Language)的基本概念。XML是一种标记语言,用于存储和传输结构化数据。它的结构清晰...

    java 使用JDOM解析xml文件.docx

    Java 使用 JDOM 解析 XML 文件 Java 是一种广泛使用的程序设计语言,而 XML 是一种广泛使用的标记语言,用于存储和传输数据。在 Java 中,解析 XML 文件是一件常见的任务,而 JDOM 是一个流行的开源库,用于解析和...

    jdom解析xml文件小实例

    在这个小实例中,我们将深入探讨如何使用JDOM解析XML文件。 首先,我们需要引入JDOM的依赖。在Java项目中,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.jdom &lt;artifactId&gt;...

    JDOM解析XML文档

    ### JDOM解析XML文档 #### 一、JDOM概述与特点 JDOM(Java Document Object Model)是一款专为Java优化的开源XML数据处理库。它虽然与W3C的DOM标准相似,但作为DOM的一种替代方案,JDOM并不是基于DOM构建的,也...

    jdom解析XML文件and把字符串解析成XML

    ### jdom解析XML文件及将字符串解析为XML #### 一、JDOM简介与环境搭建 JDOM(Java Document Object Model)是一种用Java语言编写的轻量级API,用于处理XML文档。它允许开发者轻松地读取、创建、修改XML文档,并将...

    JDOM解析xml文档实例(自己编写,仅供参考)

    1. `JDOMUtil.java`:这是一个Java类,包含了使用JDOM解析XML的主要代码。在这个例子中,我们将学习如何读取XML文件,创建一个`SAXBuilder`对象来构建XML文档的DOM(文档对象模型)表示,然后通过`Document`对象来...

    Jdom解析xml文件

    以下是一个简单的示例代码,演示了如何使用JDOM解析XML文件: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; import java.io.File; public class ...

    java jdom解析xml

    Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...

    jdom 读取XML 文件

    JDOM是Java中一个用于处理XML文档的库,它提供了一种高效且方便的方式来创建、读取、修改XML文件。本篇文章将深入探讨如何使用JDOM来读取XML文件。 首先,我们需要了解JDOM的基本概念。JDOM通过构建一棵DOM...

    Jdom解析XML

    使用JDOM解析XML文档通常包括以下几个步骤: 1. 创建`SAXBuilder`实例,这是JDOM提供的解析器,可以将XML输入源转换为`Document`对象。 2. 使用`SAXBuilder`的`build`方法读取XML文件,生成`Document`对象。 3. ...

    用jdom解析xml

    这个JSP页面首先解析XML文件,显示其顶级元素,然后以格式化的形式输出整个XML文档。 **7. 性能考虑** 虽然JDOM提供了易用性,但它的性能可能不如其他XML解析器如DOM4J或StaX。在处理大型XML文件时,应考虑这些...

    Dom JDom 解析xml 文件

    在Java中,解析XML文件是常见的任务,其中DOM(Document Object Model)和JDOM是两种常用的方法。 DOM解析是XML解析的一种方式,它将整个XML文档加载到内存中,形成一个树形结构,称为DOM树。每个节点代表XML文档的...

    jdom 解析 XML文件 java程序 存入Oracle数据库

    对于含有子节点的复杂的XML文件,可以采用jdom.jar来解析。 上传的文件包括程序,XML文件,jdom包,jdbc包 对于复杂的XML文件,可以采用层层解析,虽然方法不是很简便,但是,可以完成解析的任务,而且,准确率很高...

    java用jdom解析xml到txt

    综上所述,使用JDOM解析XML文件并将其内容导出到TXT文件,主要涉及XML的读取、遍历和内容输出。通过JDOM,你可以方便地处理XML的结构、元素、属性等信息,为Java应用程序提供灵活的数据处理能力。在实际应用中,可以...

Global site tag (gtag.js) - Google Analytics