![](https://i-blog.csdnimg.cn/blog_migrate/11ab61846568f7310c1fec6b75306fcd.jpeg)
全栈工程师开发手册 (作者:栾鹏)
java使用JDOM接口解析xml文件,包含创建、增删查改、保存,读取等操作。
需要引入jdom.jar,下载
xercesImpl.jar,下载
测试代码
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import java.io.*;
import java.util.List;
public static void main(String[] args) {
Document docjdom = creat_xml();
save_xml(docjdom,"book1.xml");
read_xml("book1.xml");
}
创建,增删查改xml元素,获取元素列表,修改元素内容,删除子元素等操作。
//使用jdom操作xml文件,添加节点,删除节点,查找。修改,保存
public static Document creat_xml()
{
String[] strChapter = { "基础知识", "图形界面", "图形处理", "I/O操作", "网络编程", "数据库" };
Element elmtRoot = new Element("book"); //根目录
Document docJDOM = new Document(elmtRoot);
//新建元素
for(int i=0; i<6; i++)
{
//声明新元素
Element elmtChapter = new Element("Chapter");
//添加内容
elmtChapter.addContent(strChapter[i]);
//构造属性,并添加到元素中
Attribute a=new Attribute("id",new Integer(i).toString());
elmtChapter.addAttribute(a);
//将元素添加到根节点下
elmtRoot.addContent(elmtChapter);
}
//获取元素列表
List lstChapter = elmtRoot.getChildren("Chapter");
//刪除第4个元素
lstChapter.remove(4);
//获取子元素
Element dd=(Element)lstChapter.get(0);
//修改元素内容
dd.setContent("11111");
//输出
return docJDOM;
}
保存xml文件,输入为Document对象 ,和xml文件存储地址
public static void save_xml(Document docXML, String filepath)
{
//使用JDOM的XML输出
XMLOutputter fmt = new XMLOutputter();
try {
//声明使用GB2312字符集
fmt.setEncoding("GB2312");
//可以换行
fmt.setNewlines(true);
//输出文件对象
FileWriter fwXML = new FileWriter(filepath);
fmt.output(docXML, fwXML);
fwXML.close();
}catch (IOException e) {
e.printStackTrace();
}
}
读取遍历xml元素
//构造器,实现XML文件解析
public static void read_xml(String filepath)
{
Document docJDOM;
//利用SAX建立Document
SAXBuilder bSAX = new SAXBuilder(false);
try {
//生成document对象
docJDOM = bSAX.build(new File(filepath));
}catch (JDOMException e) {
e.printStackTrace();
return;
}
//得到Document的根(节点名:book)
Element root = docJDOM.getRootElement();
System.out.println("根节点标记名:" + root.getName());
System.out.println("*****下面遍历XML元素*****");
//获得Chapter元素集合
List list = root.getChildren("Chapter"); //getChildren返回的是列表,及时在xml中可能只有一个子元素
//遍历Chapter元素
for (int i=0; i < list.size() ; i++)
{
//获得Chapter的元素
Element element = (Element)list.get(i);
//获得ID属性
String id = element.getAttributeValue("id");
//获得Chapter元素的值
String content = element.getText();
System.out.println("ID:" + id + " " +"内容:" + content);
}
}