2014年10月13日写:修改添加xml元素

package haha;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class ModiXmlFile {
    private String filename;
    private SAXReader saxReader;
    private Document document;

    ModiXmlFile(String _filename) {
    this.filename = _filename;
    saxReader = new SAXReader();
    try {
        document = saxReader.read(filename);
    } catch (DocumentException e) {
        System.err.println("获取 [" + filename
            + "]文档时,发生了错误");
    }
    }
    /**
     * 在所有的二级元素下添加元素,若已有则不填加。
     * @param nodeName 元素名
     * @param initValue 初始值
     * @return 若添加了元素,返回true。没有添加返回false
     */
    @SuppressWarnings("unchecked")
    public Boolean addNode(String nodeName, String initValue) {
    Element root = document.getRootElement();
    List<Element> elements = root.elements();
    Iterator<Element> it = elements.iterator();
    Element tempElement;
    Boolean result=false;
    while (it.hasNext()) {
        tempElement=it.next();
        if (tempElement.element(nodeName)==null) {
        tempElement.addElement(nodeName).setText(initValue);
        result=true;
        }
    }
    if (result) {
        if (fflush())
            return true;
        else
            return false;
    }
    else {
        return false;
    }
    }
/**
 * 根据所给的id,修改第id个二级元素拥有的指定元素的值
 * @param id 二级元素的次序
 * @param nodeName 指定元素的名字
 * @param value 值
 * @return 修改成功或失败(没有此元素);
 */
    @SuppressWarnings("unchecked")
    public Boolean setNodeValue(Integer id, String nodeName, String value) {
    Element root = document.getRootElement();
    List<Element> elements = root.elements();
    Iterator<Element> it = elements.iterator();
    boolean result=false;
    Element tempElement;
    while (it.hasNext()) {
        tempElement=it.next();
        if (--id!=0) {
        continue;
        }
        if (tempElement==null) {
        System.err.println("没有此节点");
        return false;
        }
        tempElement.element(nodeName).setText(value);
        result=true;
        break;
    }
    if (!result) {
        System.err.println("指定的次序超过了总二级元素个数");
        return false;
    }
    else if (fflush()) {
        return true;
    }
    else {
        return false;
    }
    }
    private Boolean fflush() {
    XMLWriter output;
    try {
        output = new XMLWriter(new FileWriter(new File(filename)));
        output.write(document);
        output.close();
    } catch (IOException e) {
        System.err.println("打开 [" + filename + "],发生了错误");
        return false;
    }
    return true;
    }
}
时间: 2024-11-08 14:02:22

2014年10月13日写:修改添加xml元素的相关文章

【每日圣经日历】2014年10月13日

注:移动用户(特别是苹果(Ipad))可以全选文字使用机器朗读 Lundi le 13 Octobre 2014 礼拜一 2014年10月13日 Il a été maltraité et opprimé, Et il n'a point ouvert la bouche, \nSemblable à un agneau qu'on mène à la boucherie, A une brebis muette \ndevant ceux qui la tondent; Il n'a poin

临别前夕,工作总结 于2014年8月13日 终稿

短暂的9个月,也是我蝉蜕的9个月,经历了很多事情,也遇到了很多麻烦.在不停地探索中迷茫着,在不停地前进中追求着. 首先要感谢公司给我带来了安逸宽松的工作环境与自由发挥创新的工作空间.从前台到后台,不论是功能测试还是系统安全,都可以亲力亲为的实践学习.领导没有干预过太多我的工作方向,可以尽情的发挥与创新着我的Model. 公司的项目几乎都有过涉猎,从刚开始启动Tradx直到参与的最后一个项目chemon自动化框架.虽然结束的有些突然而且没有防备,但大部分的工作还是形成了一定的Model. 1)风控

【每日圣经日历】2014年10月11日

注:移动用户(特别是苹果(Ipad))可以全选文字使用机器朗读 Samedi le 11 Octobre 2014 礼拜六 2014年10月11日 Ne vous enivrez pas de vin: c'est de la débauche. Soyez, au contraire, remplis de l'Esprit;entretenez-vous par des psaumes, par des hymnes, et par des cantiques spirituels, cha

【每日圣经日历】2014年10月4日

Samedi le 4 Octobre 2014 礼拜六 2014年10月4日 Que le mariage soit honoré de tous, et le lit conjugal exempt de souillure, car Dieu jugera les impudiques et les adultères.                                                                    Hébreux 13. 4 婚姻,人

微信公众号智能绑定功能实现(2014年10月24日 更新)

微信公众号智能绑定功能实现(2014年10月24日 更新) 继微信企业号公布后,腾讯改动了公众号的接入方式,在之前的基础上加入了2个表单,之前版本号的智能绑定失效了! 在文章 微信公众号之智能绑定实现初始版本号  的基础上改动,新增腾讯这次添加的表单,本次新增的表单有: encoding_aeskey :EncodingAESKey(消息加解密密钥.长度43位!) callback_encrypt_mode: 消息加解密方式(0:明文模式.1:兼容模式.3:安全模式(推荐)) operation

【每日圣经日历】2014年10月1日

Mercredi le 1 Octobre 2014 礼拜三 2014年10月1日 Car il viendra un temps où les hommes ne supporteront pas la saine doctrine; mais, ayant la démangeaison d'entendre des choses agréables, ils se donneront une foule de docteurs selon leurs propres désires, dé

【每日圣经日历】2014年10月9日

Jeudi le 9 Octobre 2014 礼拜四 2014年10月9日 Demandez, et l'on vous donnera; cherchez, et vous trouverez; frappez, et l'on vous ouvrira.Car quiconque demande reoit, celui qui cherche trouve, et l'on ouvre à celui qui frappe.                                

【每日圣经日历】2014年10月17日

注:移动用户(特别是苹果(Ipad))可以全选文字使用机器朗读 Vendredi le 17 Octobre 2014 礼拜五 2014年10月17日 C'est pour la liberté que Christ nous a affranchis. Demeurez donc \nfermes, et ne vous laissez pas mettre de nouveau sous le joug de la \nservitude.                          

【每日圣经日历】2014年10月2日

Jeudi le 2 Octobre 2014 礼拜四 2014年10月2日 Maintenant, Seigneur ternel, tu es Dieu, et tes paroles sont vérité, et tu as annoncé cette grce à ton serviteur.                                                                      2 Samuel 7. 28 主耶和华阿,惟有你是神.你