java解析xml文件:创建、读取、遍历、增删查改、保存

全栈工程师开发手册 (作者:栾鹏)

java教程全解

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);
      }
  }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

腾讯AI架构师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值