JDOM读写XML的例子

效果: 从1.xml中读入并修改, 然后写入2.xml, 两个xml文档如下

1.xml
--------------------------------------
<?xml version="1.0" encoding="gb2312"?>
<total>
 <item name="item 1">
  <sub>sub item 1</sub>
 </item>
 <item name="item 2">
  <sub>sub item 2</sub>
 </item>
</total>

2.xml
--------------------------------------
<?xml version="1.0" encoding="gb2312"?>
<total>
 <item started="true" name="new item">
  <sub>new item0</sub>
 </item>
 <item name="item 2">
  <sub>new item1</sub>
 </item>
</total>
/**
 * 测试类, 演示如何使用JDOM对XML文档读写
 *
 * Delfan, 2002-11-17
 * http://www.delfan.com
 */
package com.test;

import org.jdom.*;
import org.jdom.output.*;
import org.jdom.input.*;

import java.io.*;
import java.util.List;


public class JDomeSample
{
  public static void main(String[] args) throws Exception // 如果有任何异常则抛出
  {
    SAXBuilder sb = new SAXBuilder(); // 新建立构造器
    Document doc = sb.build(new FileInputStream("1.xml")); // 读入1.xml

    Element root = doc.getRootElement(); // 取得根节点, 就是例子中的<total>节点
    List list = root.getChildren(); // 取得根节点下一层所有节点放入List类中

    for(int i=0; i<list.size(); i++)
    {
      System.out.println("-------------------------");
      Element item = (Element)list.get(i); // 取得节点实例
      String name = item.getAttribute("name").getValue(); // 取得属性的值
      System.out.println("NAME-->"+name);

      Element sub = item.getChild("sub"); // 取得当前节点的指定子节点
      String text = sub.getText(); // 取得指定子节点的内容
      System.out.println("SUB-->"+text);
      sub.setText("new item"+String.valueOf(i) ); // 改变子节点的内容
    }

    Element item = (Element)list.get(0); // 取得根节点下第一个子节点

    Attribute a = new Attribute("started","true"); // 增加一个新的属性
    item.addAttribute(a);
    item.setAttribute("name","new item"); // 改变旧的属性值
    String indent = ""; // 缩进符号
    boolean newLines = false; // 是否产生新行
    XMLOutputter outp = new XMLOutputter (indent,newLines,"gb2312"); // 构造新的输出流
    outp.output(doc, new FileOutputStream("2.xml")); // 输出到2.XML文件中
  }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值