【JAVA】JDOM对XML编程

本文介绍如何使用JDOM库在Java中创建和解析XML文件。通过示例展示了如何构建XML文档、添加元素及属性,以及如何读取XML文件中的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

写XML文件

JDOM只是一种适合Java程序员来使用的Java XML解析器。Java + XML = JDOM ! http://jdom.org可以下载JDOM的最新版本。

导入jdom-2.0.5.jar 到项目中。

package javaChapter2;  
import java.io.FileWriter;
import java.util.*;
import org.jdom2.*;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

  public class JDomWriter{  
	  public static void main(String[] args) throws Exception {  
		  Document doc = new Document();
		  Element root = new Element("学生列表");
		  doc.setRootElement(root); //根元素
		  
		  Element stu = new Element("学生"); //创建学生元素
		  stu.setAttribute("sno","95001");
		  stu.addContent(new Comment("第一名"));//注释
		  
		  Element name = new Element("姓名");
		  name.addContent("zhou");
		  
		  root.addContent(stu); //将stu 姓名 元素添加至 root  学生列表  元素中
		  stu.addContent(name); 
		  stu.addContent(new Element("年龄").addContent("22"));
		  
		  Element stu2 = new Element("学生");
		  stu2.setAttribute("sno","85000");
		  stu2.addContent(new Element("姓名").addContent("lisi"));
		  root.addContent(stu2);
		  
		  XMLOutputter outputter = new XMLOutputter();
		  Format format = outputter.getFormat(); //获取已有的格式
		  format.setEncoding("GB2312");//设置XML编码
		  format.setIndent("  "); //设置XML缩进空格数,并且每个元素单独占一行
		  outputter.setFormat(format); //设置outputter格式
		  outputter.output(doc, new FileWriter("d:\\my.dxml")); //输出到文件
     }  
}  

结果 



Jdom 解析 XML 

 导入jdom-2.0.5.jar       .. 。。建立 students.xml 文件

<?xml version="1.0" encoding="UTF-8"?>
<students>
	<student ID="001">
		<name>lisi</name>
		<sex>men</sex>
	</student>

	<student ID="002">
		<name>wangwu</name>
		<sex>men</sex>
	</student>
</students>

package com.jdom;

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
//下面是引用到JDOM中的类
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.XMLOutputter;


public class Jdomtest {
	  public Jdomtest(){
	   String xmlpath="src/students.xml";   //注意路径。。
           SAXBuilder builder=new SAXBuilder(); //指定使用的解析器
	   try {
	    Document doc=builder.build(xmlpath);//得到document
	    Element students=doc.getRootElement();  //得到根元素 
	    List studentlist=students.getChildren("student");  //得到元素(节点)的集合
	    for (Iterator iter = studentlist.iterator(); iter.hasNext();) 
	    {
		      Element student = (Element) iter.next();
		      String ID=student.getAttributeValue("ID"); //取得元素student的属性名为“ID”的属性值
		      System.out.print(ID+"   ");
		      String name=student.getChildTextTrim("name"); //取得元素的子元素(为最低层元素)的值
		      System.out.println(name); 
	      
	     }
	  //for(int i=0;I<booklist.size();I++)
              // {   Element student=(Element)studentlist.get(i); } 读取student的所有子节点中的第一个子节点
            XMLOutputter outputter=new XMLOutputter();  //保存Document的修改到XML文件中
	     outputter.output(doc,new FileOutputStream(xmlpath));	     
	    } catch (JDOMException e) {
	     e.printStackTrace();
	    } catch (IOException e) {
	     e.printStackTrace();
	    }
	   }
	   public static void main(String[] args) {
		   new Jdomtest();
	   }
 }


        

  基本流程:
一.建立解析器
  //SAXBuilder sb=new SAXBuilder();
    返回Document文档
  //Document doc=sb.build(new FileInputStream(XmlFname));
二.DOM处理
  元素基于Content类.Element类操作同Dom.
三.DOM结果处理(输出/保存)
  Format fo=Format.getCompactFormat();//取得输出格式Format
  //fo.setEncoding("GB2312");
  XMLOutputter outputter=new XMLOutputter(fo);
  FileWriter write=new FileWriter(XmlFname);//这里可以是PrintWriter形式的(任何Writer流).
  outputter.output(doc,write/*Writer流,见构造函数*/);
  write.close();



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值