Jdom的简单操作

http://blog.csdn.net/heirenheiren/article/details/7354108

http://www.cnblogs.com/hoojo/archive/2011/08/11/2134638.html

这两篇博客有比较好的解释

下面是我个人尝试

package com.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
public class JDomTest {
	public void dDom() throws JDOMException, IOException {
		//指定解析器
		 SAXBuilder sb=new SAXBuilder(); 
		//获取xml文件的InputStream
		 InputStream is=this.getClass().getClassLoader().getResourceAsStream("test.xml");
		 System.out.println(is);
        //得到Document
		 Document dc=sb.build(is);
		 /* 获取文件路径,变为输出流,并尝试修改xml文件失败
		  *  String url=String.valueOf(this.getClass().getClassLoader().getResource("test.xml"));
	      *	 String path=url.substring(6);
	      *	 System.out.println("url:"+url+"
"+"path:"+url.substring(6));
	      *	 OutputStream os=new FileOutputStream(new File(path));
		  */
		
		 //取得根
	     Element root=  dc.getRootElement();
		 //获取说有根下面 名字为disk的所有子项,并放到list中
	      List allList=root.getChildren("disk");
	      for(int  i=0;i<allList.size();i++)
	      {
	    	  //获取单个element
	        Element sigElement=(Element)allList.get(i);
	        //获取单签element的属性
	        System.out.println("disk name:"+sigElement.getAttributeValue("name"));
	        //获取单签element下的子element
	        System.out.println("capacity:"+sigElement.getChildText("capacity"));
	        System.out.println("directories:"+sigElement.getChildText("directories"));
	        System.out.println("files:"+sigElement.getChildText("files"));
	       
	      }
      /*获取文件路径,变为输出流,并尝试修改xml文件失败
       * root.getChild("disk").setText("F");
	   * XMLOutputter outPutter=new XMLOutputter();
	   * outPutter.output(dc,os);
       */

	}
	
}

 xml文件

<?xml version="1.0" encoding="UTF-8"?>
<HD>
  <disk name="C">
    <capacity>8G</capacity>
    <directories>200</directories>
    <files>1580</files>
  </disk>

  <disk name="D">
    <capacity>10G</capacity>
    <directories>500</directories>
    <files>3000</files>
  </disk>
</HD> 

 结果:

java.io.BufferedInputStream@5cbfe9d
disk name:C
capacity:8G
directories:200
files:1580
disk name:D
capacity:10G
directori es:500
files:3000

 上面有尝试修改xml文件,逻辑上是没有错的,但是在执行过程中,总是有错,是jdom的问题,把代码注释掉,还是有错,只有把jdom包重新考进去覆盖原先的包,才不会报错

郁闷啊! 

原文地址:https://www.cnblogs.com/fjsnail/p/3491955.html