通过Dom4j创建和读取xml文件

一、创建一个简单的xml文件:

/*
	 * @param filename 需建立的文件名
	 * 
	 * @return 返回操作结果, 0表失败, 1表成功
	 */
	public static int createXMLFile(String filename) {
		/** 返回操作结果, 0表失败, 1表成功 */
		int returnValue = 0;
		/** 建立document文档对象 */
		Document document = DocumentHelper.createDocument();
		/** 建立XML文档的根节点books */
		Element booksElement = document.addElement("books");
		/** 在根节点<books>下加入一行注释 */
		booksElement.addComment("This is a test for dom4j, holen2009.9.11");
		/** 加入第一个book子节点(即第一本书) */
		Element bookElement = booksElement.addElement("book");
		/** 加入show属性内容 */
		bookElement.addAttribute("show", "yes");
		/** 在<book>节点下加入title节点 */
		Element titleElement = bookElement.addElement("title");
		/** 为title设置内容 */
		titleElement.setText("Dom4j Tutorials");
		/** 类似的完成后两个book */
		bookElement = booksElement.addElement("java");
		bookElement.addAttribute("show", "yes");
		titleElement = bookElement.addElement("title");
		titleElement.setText("java编程思想中文版");
		bookElement = booksElement.addElement("C语言");
		bookElement.addAttribute("show", "no");
		bookElement.addAttribute("name", "C#入门经典");
		titleElement = bookElement.addElement("title");
		titleElement.setText("C#编程思想中文版");
		/** 加入owner节点 */
		Element ownerElement = booksElement.addElement("owner");
		ownerElement.setText("O'Reilly");
		try {
			/** 将document中的内容写入文件中 */
			XMLWriter writer = null;
			/** 格式化输出,类型IE浏览一样 */
			OutputFormat format = OutputFormat.createCompactFormat();
			/** 指定XML编码 */
			format.setEncoding("UTF-8");
			writer = new XMLWriter(new FileOutputStream(new File(filename)),
					format);
			// writer = new XMLWriter(new FileOutputStream(new File(filename)));
			// 把整个文档写入文件
			writer.write(document);
			writer.close();
			/** 执行成功,需返回1 */
			returnValue = 1;
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return returnValue;
	}

   输出的xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<books>
  <!--This is a test for dom4j, holen2009.9.11-->
  <book show="yes">
    <title>Dom4j Tutorials</title>
  </book>
  <java show="yes">
    <title>java编程思想中文版</title>
  </java>
  <C语言 show="no" name="C#入门经典">
    <title>C#编程思想中文版</title>
  </C语言>
  <owner>O'Reilly</owner>
</books>

    建立文档步骤及常用方法:

    1、建立document文档对象-->DocumentHelper.createDocument();
 
 2、建立XML文档的根节点-->调用Document对象的addElement("elementName")方法
 
 3、加入一行注释-->Element对象的addComment("comment Text")方法
 
 4、在根节点下建立子子节点-->Element对象的addElement("elementName");
 
  5、加入属性内容-->如:<book name="java" show="yes">使用Element对象的addAttribute("name", "value");
  
  6、为节点设置内容-->如:<title>内容<itle>,使用Element的setText("内容")方法
  
 7、将document中的内容写入文件中-->使用XMLWriter的writer方法,通过构造方法XMLWriter(OutputStream out, OutputFormat format)
 获得XMLWriter对象.OutputFormat为格式化输出对象(有两种格式),默认是使用CompactFormat,输出的内容不会换行,
 若要使用换行,需要通过OutputFormat.createCompactFormat()获取.还可以设置字符值编码,调用OutputFormat的setEncoding("utf-8")方法.

 

二、读取xml文档.

public static void ReadXml(String filename) {
		SAXReader saxReader = new SAXReader();
		Document document = null;
		try {
			document = saxReader.read(
			// 搜索当前线程classpath下的文件
			Thread.currentThread().getContextClassLoader()
							.getResourceAsStream(filename));
		} catch (DocumentException e) {
			e.printStackTrace();
		}

		// xpath查找对象
		List list = document.selectNodes("//java");

		for (Iterator iter = list.iterator(); iter.hasNext();) {
			Element element = (Element) iter.next();
			System.out.println(element.attributeValue("show"));
			List titlelist = element.selectNodes("title");
			Element title = (Element) titlelist.get(0);
			System.out.println(title.getText());

		}
	}

 

读取文档步骤及常用方法:
   1、通过SAXReader对象的read(InputStream in)方法获取整个文档(以树的结构加载到内存中).
  
   2、通过Document对象selectNodes("//java")方法获取指定的节点,并返回List对象,而List里装的Element对象.
  
   3、通过遍历的方式读取指定的节点(Element)列表,通过调用Element的方法可获取此节点的属性值或Text值.
  
   4、你可以定义一个POJO的java类封装Element的属性.

 

三、dom4j在实际项目中的应用

 

附件还带有修改的方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值