java 对xml的增删改查

<?xml version="1.0" encoding="UTF-8"?>
<root>
 <person id="1">
  <username >xiaoma</username>
  <password>xiaoma</password>
 </person>
 <person id="2">
  <username>manager</username>
  <password>password2</password>
 </person>
 <person id="3">
  <username>hello</username>
  <password>woerld</password>
 </person>
</root>

 

 

*****************************

package com.test;

import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;

/**
 * xml的增删改查之SAXBuilder
 *
 * @author Administrator
 *
 */
public class XmlTest {

 // 查询所有的数据
 public static void list() throws JDOMException, IOException {
  SAXBuilder builder = new SAXBuilder();
  String xmlPath = "message.xml";
  // String xmlPath = "./WebRoot/xml/message.xml";
  // 获得文档对象
  Document document = builder.build(xmlPath);
  // 获得根节点
  Element root = document.getRootElement();
  List list = root.getChildren();
  System.out.println("root : " + root);
  System.out.println("root.getName : " + root.getName());
  System.out.println("listSize : " + list.size());
  Iterator it = list.iterator();
  while (it.hasNext()) {
   Element e = (Element) it.next();
   System.out.println("ID: " + e.getAttributeValue("id"));
   System.out.println("childUsername:" + e.getChildText("username"));
   System.out.println("childPassword:" + e.getChildText("password"));
  }

  // for(int i=0;i<list.size();i++){
  // Element e = (Element)list.get(i);
  // ...
  // }
 }

 // 在原有的xml文件中增加数据
 public static void add() throws JDOMException, FileNotFoundException,
   IOException {
  SAXBuilder builder = new SAXBuilder();
  String xmlPath = "message.xml";
  Document document = builder.build(xmlPath);

  // 获得根节点
  Element root = document.getRootElement();

  // 创建节点person
  Element element = new Element("person");

  // 给person节点添加属性id
  element.setAttribute("id", "3");

  // 给person节点添加子节点并赋值
  element.addContent(new Element("username").setText("hello"));
  element.addContent(new Element("password").setText("woerld"));

  // 给父节点添加person子节点
  root.addContent(element);

  XMLOutputter output = new XMLOutputter();
  output.output(document, new FileOutputStream(xmlPath));
 }

 public static void edit(int id) throws JDOMException,
   FileNotFoundException, IOException {
  SAXBuilder builder = new SAXBuilder();
  Document document = builder.build("message.xml");
  Element root = document.getRootElement();

  List list = root.getChildren();
  Iterator it = list.iterator();
  for (int i = 0; i < list.size(); i++) {
   Element e = (Element) it.next();
   System.out.println("==============" + e.getAttributeValue("id"));
   if (Integer.parseInt(e.getAttributeValue("id")) == id) {
    e.getChild("username").setText("xiaoma");
    e.getChild("username").setAttribute("ip", "66666666666");
    e.getChild("password").setText("xiaoma");

   }
  }
  XMLOutputter output = new XMLOutputter();
  output.output(document, new FileOutputStream("message.xml"));
 }
 //删除
 public static void del(int id) throws JDOMException, FileNotFoundException,
   IOException {
  SAXBuilder builder = new SAXBuilder();
  Document document = builder.build("message.xml");
  Element root = document.getRootElement();

  List list = root.getChildren();
  Iterator it = list.iterator();

  for (int i = 0; i < list.size(); i++) {
   Element e = (Element) it.next();
   if (Integer.parseInt(e.getAttributeValue("id")) == id) {
    root.removeContent(e);
    break;
   }
  }
  // 文件处理
  XMLOutputter out = new XMLOutputter();
  out.output(document, new FileOutputStream("message.xml"));
 }

 public static void main(String[] args) {
  try {
   //XmlTest.edit(1);
   XmlTest.del(1);
   // XmlTest.add();
    XmlTest.list();
  } catch (JDOMException e1) {
   e1.printStackTrace();
  } catch (IOException e1) {
   e1.printStackTrace();
  }

 }
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值