⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmldemo1.java

📁 一个用Java调用DOM4J解析XML的例子 比较全面 对初学者很有帮助 高手就不浪费你们的点数了 呵呵
💻 JAVA
字号:
package com.ly;

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

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XMLDemo1
{
	// 这个方法接受一个文件名字。
	// 然后在内存中使用dom4j用来创建一个文档并填交到文件中间
	public boolean createXMLFile(String fileName)
	{
		/** 返回操作结果, false表失败, true表成功 */
		boolean returnValue = false;
		/** 建立document对象 */
		Document document = DocumentHelper.createDocument();
		/** 建立XML文档的根books */
		Element booksElement = document.addElement("books");
		// document.remove(booksElement);
		/** 加入一行注释 */
		booksElement.addComment("this dom4j 测试, 2009-01-10");
		/** 加入第一个book节点 */
		Element bookElement = booksElement.addElement("book");
		/** 加入show属性内容 */
		bookElement.addAttribute("show", "yes");
		/** 加入title节点 */
		Element titleElement = bookElement.addElement("title");
		/** 为title设置内容 */
		titleElement.setText("AJAX In Action");
		Element yearElement = bookElement.addElement("year");
		/** 为title设置内容 */
		yearElement.setText("9999");

		/** 类似的完成后两个book */
		bookElement = booksElement.addElement("book");
		bookElement.addAttribute("show", "yes");
		titleElement = bookElement.addElement("title");
		titleElement.setText("struts");

		bookElement = booksElement.addElement("book");
		bookElement.addAttribute("show", "no");
		titleElement = bookElement.addElement("title");
		titleElement.setText("dom4j in action");

		/** 加入owner节点 */
		Element ownerElement = booksElement.addElement("owner");
		ownerElement.setText("bird");

		try
		{
			/** 将document中的内容写入文件中 */
			// 在这里使用字节输出流,可以避免中文问题
			XMLWriter writer = new XMLWriter(new FileOutputStream(new File(fileName)));

			writer.write(document);
			writer.close();
			/** 执行成功,需返回true */
			returnValue = true;
		} catch (Exception e)
		{
			e.printStackTrace();
		}
		return returnValue;
	}

	/**
	 * 修改XML文件中内容,并另存为一个新文件 重点掌握dom4j中如何添加节点,修改节点,删除节点
	 * 
	 * @param srcFileName修改对象文件
	 * @param distFileName修改后另存为该文件
	 * @return 返回操作结果, false表失败, true表成功
	 * 
	 */

	public boolean modifyXMLFile(String srcFileName, String distFileName)
	{
		boolean returnValue = false;
		try
		{
			// 创建界吸器对象。加载文件。得到Document对象
			SAXReader saxReader = new SAXReader();
			Document document = saxReader.read(new File(srcFileName));

			/** 修改内容之一: 如果book节点中show属性的内容为yes,则修改成no */
			/** 先用xpath查找对象 */

			List list = document.selectNodes("/books/book/@show");
			Iterator iter = list.iterator();
			while(iter.hasNext())
			{
				Attribute attribute = (Attribute) iter.next();
				if(attribute.getValue().equals("yes"))
				{
					attribute.setValue("no");
				}
			}

			/**
			 * 修改内容之二: 把owner项内容改为Tshinghua
			 * 
			 * 并在owner节点中加入date节点,date节点的内容为2004-09-11,还为date节点添加一个属性type
			 * 
			 */
			list = document.selectNodes("/books/owner");
			iter = list.iterator();

			if(iter.hasNext())
			{
				Element ownerElement = (Element) iter.next();
				ownerElement.setText("Tshinghua");
				Element dateElement = ownerElement.addElement("date");
				dateElement.setText(java.util.Calendar.getInstance().toString());
				dateElement.addAttribute("type", "Gregorian calendar");

			}

			/** 修改内容之三: 若title内容为AJAX In Action,则删除该节点 */
			list = document.selectNodes("/books/book");
			iter = list.iterator();
			while(iter.hasNext())
			{
				Element bookElement = (Element) iter.next();
				Iterator iterator = bookElement.elementIterator("title");
				while(iterator.hasNext())
				{
					Element titleElement = (Element) iterator.next();
					if(titleElement.getText().equals("AJAX In Action"))
					{
						bookElement.remove(titleElement);
					}
				}
			}

			try
			{
				/** 将document中的内容写入文件中 */
				XMLWriter writer = new XMLWriter(new FileWriter(new File(distFileName)));
				writer.write(document);
				writer.close();
				/** 执行成功,需返回true */
				returnValue = true;
			} catch (Exception ex)
			{
				ex.printStackTrace();
			}
		} catch (Exception ex)
		{
			ex.printStackTrace();
		}
		return returnValue;

	}

	/**
	 * 格式化XML文档,并解决中文问题
	 * 
	 * @param fileName文件名称
	 * 
	 * @return 返回值
	 * 
	 */

	public boolean formatXMLFile(String fileName)
	{

		boolean returnValue = false;
		try
		{
			SAXReader saxReader = new SAXReader();
			Document document = saxReader.read(new File(fileName));
			XMLWriter writer = null;

			/** 格式化输出,类型IE浏览一样 */
			OutputFormat format = OutputFormat.createPrettyPrint();
			/** 指定XML编码 */
			format.setEncoding("utf-8");
			writer = new XMLWriter(new FileWriter(new File(fileName)), format);
			writer.write(document);
			writer.close();
			/** 执行成功,需返回true */
			returnValue = true;
		} catch (Exception ex)
		{
			ex.printStackTrace();
		}
		return returnValue;
	}

	public static void main(String[] args)
	{
		XMLDemo1 dom4jdemo = new XMLDemo1();
		String tmpFile = "tmp.xml";
		String dataFile = "data.xml";
		if(!dom4jdemo.createXMLFile(tmpFile))
		{
			System.out.println("creatXMLFile出错了");
			return;
		}
		if(!dom4jdemo.modifyXMLFile(tmpFile, dataFile))
		{
			System.out.println("ModifyXMLFile出错了");
			return;
		}
		if(!dom4jdemo.formatXMLFile(dataFile))
		{
			System.out.println("formatXMLFile出错了");
			return;
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -