import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
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.Format;
import org.jdom.output.XMLOutputter;
public class JDOMparseExample1 ... {
public static void main(String[] args)
throws IOException,FileNotFoundException,JDOMException ...{
//SAXBuilder使用一个第三方的SAX解析器,可以从不同的输入源来构造JDOM文档对象
SAXBuilder builder=new SAXBuilder();
Document doc=builder.build(new FileInputStream("student.xml"));
//getRootElement()用于返回文档的根元素.
Element element=doc.getRootElement();
//Element类中定义了获取子元素的方法,得到所有子元素
List list=element.getChildren();
//iterator()方法返回以正确顺序在列表的元素上进行迭代的迭代器
//hasNext()方法判断如果仍有元素可以迭代,则返回 true
for(Iterator i=list.iterator();i.hasNext();)...{
//next()方法返回迭代的下一个元素。重复调用此方法直到hasNext()方法返回 false,
//这将精确地一次性返回迭代器指向的集合中的所有元素
Element current=(Element)i.next();
//判断姓名子元素的值是否为张三
if(current.getChildText("姓名").equals("张三"))...{
//删除年龄子元素
current.removeChild("年龄");
//创建年龄子元素
Element age=new Element("年龄");
//设置年龄子元素的值
age.setText("23");
//将年龄子元素添加到父元素中
current.addContent(age);
}
//判断姓名子元素的值是否为李四
if(current.getChildText("姓名").equals("李四"))...{
//删除年龄子元素
current.removeChild("年龄");
//创建年龄子元素
Element age=new Element("年龄");
//设置年龄子元素的值
age.setText("25");
//将年龄子元素添加到父元素中
current.addContent(age);
}
}
Format format=Format.getCompactFormat();
//设置文档字符编码
format.setEncoding("GB18030");
//设置缩进字符串
format.setIndent(" ");
//XMLOutputter类提供了将JDOM树输出为字节流的能力
XMLOutputter XMLOut=new XMLOutputter(format);
//输出到文件
XMLOut.output(doc,new FileOutputStream("student.xml"));
System.out.println("执行成功");
}
}
以下是XML文档内容:
<?
xml version="1.0" encoding="GB18030"
?>
< 学生花名册 >
< 学生 性别="男" >
< 姓名 > 李四 </ 姓名 >
< 电话 > 6287555 </ 电话 >
< 年龄 > 25 </ 年龄 >
</ 学生 >
< 学生 性别="男" >
< 姓名 > 张三 </ 姓名 >
< 电话 > 8273425 </ 电话 >
< 年龄 > 23 </ 年龄 >
</ 学生 >
</ 学生花名册 >
< 学生花名册 >
< 学生 性别="男" >
< 姓名 > 李四 </ 姓名 >
< 电话 > 6287555 </ 电话 >
< 年龄 > 25 </ 年龄 >
</ 学生 >
< 学生 性别="男" >
< 姓名 > 张三 </ 姓名 >
< 电话 > 8273425 </ 电话 >
< 年龄 > 23 </ 年龄 >
</ 学生 >
</ 学生花名册 >