import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import java.io.*;
public class cute{public static void main(String args[]){
try{org.jdom.input.SAXBuilder sb=new org.jdom.input.SAXBuilder();
//创建文档
org.jdom.Document    doc=sb.build(new FileInputStream("c:\\example.xml"));
//加入一条处理指令
org.jdom.ProcessingInstruction pi = new ProcessingInstruction("xml-stylesheet","href=\"bookList.html.xsl\" type=\"text/xsl\"");
//把这条处理指令,加入文档中
doc.addContent(pi);
//获得这个文档得跟元素
org.jdom.Element el=doc.getRootElement();
//获得这个跟元素,的所有子元素
java.util.List ls=el.getChildren();
//得到第一个子元素
org.jdom.Element book=(Element)ls.get(0);
//给这个字元素添加一条属性
org.jdom.Attribute attr=new Attribute("hot","true");
book.setAttribute(attr);//获得这个元素的子元素,(指定)
org.jdom.Element el2=book.getChild("author");
//输出这个元素的值
System.out.println(el2.getName());
//给这个元素的值改个名字
el2.setText("cute");//再指定元素获得这个值
org.jdom.Element el3=book.getChild("price");
//给这个值换个值
el3.setText(Float.toString(50.0f));
String a="";
boolean bool=true;org.jdom.output.XMLOutputter xml= new org.jdom.output.XMLOutputter(a,bool,"gb2312");
xml.output(doc,new FileOutputStream("c:\\cute.xml"));}catch(Exception e){
System.out.println(e.getMessage());}
}
}

解决方案 »

  1.   

    你这个土豆怎么不回答人家的问题,光顾自己写了
    问题是:
    jdom中,在写入物理文件时,怎样能做到只修改某个Element,而不是重写整个物理文件?
      

  2.   

    我觉得,如果是聪明的JDOM,它自己会优化!
    它自己会记录修改过的节点,并只更新它们:)当然,如果实在不行,你还是自己来分析XML,自己用随机方式来进来更新吧
      

  3.   

    恩,jdom是一次性读入内存的,无论怎么做都是要重写文件的但这个还是挺快的。除非文件很大。关键在于对xml解析。dom比较慢,但它确实很方便SAX是一行一行读取XML文件进行分析的,大文件应该用SAX。它保存的时候只对修改过的文件
      

  4.   


    jdom一次读入内存,然后就与文件没有关系了(你把文件删了都可以)然后你想怎么改变element的值都可以,但是如果要保存修改后的数据到xml。必须重新写回xml文件,重新output一次。