08-06
21

java通过DOM修改xml文件

package updatexml;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.*;
import org.xml.sax.SAXException;

public class UpdateXml {

public void update(Document doc, String name , String score){
   NodeList nl=doc.getElementsByTagName("name");
   for(int i=0;i<nl.getLength(); i++){
    Element e=(Element) nl.item(i);
    if(e.getFirstChild().getNodeValue().equals(name)){
     Element eScore=(Element) e.getNextSibling().getNextSibling().getNextSibling().getNextSibling();
     System.out.println(eScore.getFirstChild().getNodeValue());
     eScore.getFirstChild().setNodeValue(score);
     System.out.println(eScore.getFirstChild().getNodeValue());
    }
   }
}

/**
* @param args
*/
public static void main(String[] args) {
   // TODO 自动生成方法存根
   UpdateXml u=new UpdateXml();
   File f=new File("d:\\jcode\\student.xml");
   try {
    DocumentBuilderFactory dFac=DocumentBuilderFactory.newInstance();
    DocumentBuilder dBud=dFac.newDocumentBuilder();
    Document doc=dBud.parse(f);
    u.update(doc, "笑林", "33");
    //更新文件
    TransformerFactory tfFac=TransformerFactory.newInstance();
    Transformer tf=tfFac.newTransformer();
    StreamResult result=new StreamResult(f);
  
    DOMSource source=new DOMSource(doc);
    tf.setOutputProperty(OutputKeys.VERSION, "1.0");
    tf.setOutputProperty(OutputKeys.ENCODING, "gb2312");
    tf.setOutputProperty(OutputKeys.INDENT, "yes");
    tf.transform(source, result);
  
   } catch (ParserConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (TransformerConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   } catch (TransformerException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
  
}

}


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: DOM XML
相关日志:
评论: 1 | 引用: 0 | 查看次数: 2203
回复回复Nannar[2009-12-08 11:21 AM | del]
如果XML文件中的节点是这个样子的,能修改么?我的为什么无法修改啊,就找不到那个节点
<number/>
回复来自 blurxx 的评论 blurxx 于 2009-12-09 02:03 PM 回复
你是不是没信春哥?
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭