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+"\n"+"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包重新考进去覆盖原先的包,才不会报错
郁闷啊!