jdom操作xml文件实例

package com.donson.common;

import java.io.File;
import java.io.FileOutputStream;
import java.io.Reader;
import java.io.StringReader;

import java.io.FileInputStream;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;


public class XmlOperate {

 public static void main(String[] args) {
  XmlOperate xo= new XmlOperate ();
    xo.add();
 }
 

//访问xml文件
 private void printXmlContent(){
  SAXBuilder builder = new SAXBuilder();
  String fileContent = getXmlContent();
  try{
   Reader readStr = new StringReader(fileContent);
   Document doc = builder.build(readStr);
   Element root = doc.getRootElement();
   List childList = root.getChildren();
   System.out.println("list="+childList.size());
   for(int i=0;i     Element child = (Element)childList.get(i);
    System.out.println("ok="+child.getAttributeValue("ok"));
    System.out.println("id="+child.getChildTextTrim("id"));
    System.out.println("address="+child.getChildTextTrim("address"));
    System.out.println("text="+child.getTextTrim());
     
     Element cd = child.getChild("subx");//获取该节点下面的子节点
     if(cd!=null){
      System.out.println("cd-id="+cd.getChildText("id"));
      System.out.println("cd-value="+cd.getChildText("value"));
     }
   }
  }catch(Exception e){
   System.out.println(e.getMessage());
  }
 }

//添加操作
 private void add(){
  SAXBuilder builder = new SAXBuilder();
  String fileContent = getXmlContent();
  try{
   Reader readStr = new StringReader(fileContent);
   Document doc = builder.build(readStr);
   Element root = doc.getRootElement();
   List childList = root.getChildren();
   System.out.println("list="+childList.size());
   
   Element el = new Element("subroot");
   el.setAttribute("ok","true");
   el.setText("xxxx");
   Element id = new Element("id");
   id.setText("25");
   el.addContent(id);
   
   Element name = new Element("name");
   name.setText("guolp25");
   el.addContent(name);
   
   Element address = new Element("address");
   address.setText("深圳25");
   
   Element sex = new Element("sex");
   sex.setText("F25");
   el.addContent(sex);
   
   Element subx = new Element("subx");
    Element sid = new Element("id");
    sid.setText("s11");
    subx.addContent(sid);
    Element scontent = new Element("content");
    scontent.setText("最好操作");
    subx.addContent(scontent);
   subx.setAttribute("ok","true");
   el.addContent(subx);
   
   childList.add(el);
   Format format = Format.getCompactFormat();
   format.setEncoding("gbk");
   format.setIndent("    ");
   XMLOutputter XMLOut = new XMLOutputter(format);
   FileOutputStream writer = new FileOutputStream("d:\\test.xml");
   XMLOut.output(doc, writer);
   writer.close();
   readStr.close();
  }catch(Exception e){
   System.out.println(e.getMessage());
  }
 }


 private String getXmlContent(){
  String xmlfilepath = "d:\\test.xml";
  File file = new File(xmlfilepath);
  if(!file.exists() || file.length()<=0){
   return null;
  }else{
   FileInputStream fis = null;
   try{
    fis = new FileInputStream(file);
    long fileLength = file.length();
    byte[] fileBytes = new byte[(int)fileLength];
    fis.read(fileBytes);
    String fileData = new String(fileBytes);
    return fileData;   
   }catch(Exception e){
    e.printStackTrace();
    return null;
   }finally{
    try{
     if(fis != null){
      fis.close();
      fis = null;
     }
    }catch(Exception e){
     e.printStackTrace();
    }
   }
  } 
 }
}

文件格式见附件:        
   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值