读书人

Dom4j修改XML文件遇到一个比较纠结的有

发布时间: 2012-07-29 15:26:14 作者: rapoo

Dom4j修改XML文件遇到一个比较纠结的问题,求大神。
这是我修改XML文件的函数问题在下面

Java code
       /**     * 修改XMl文件指定节点的值     *      * @param xmlPath     *            Xml文件路径     * @param CNode     *            判断节点     * @param CValue     *            判断节点值     * @param Node     *            修改节点     * @param newValue     *            修改值     */    public boolean modifyXml(String xmlPath, String CNode, String CValue,            String Node, String newValue) {        SAXReader reader = new SAXReader();        boolean flag = false;        try {            Document doc = reader.read(this.getClass().getClassLoader()                    .getResourceAsStream(xmlPath));            Element root = doc.getRootElement();            List<Element> nodes = root.elements();            for (Element node : nodes) {                List<Element> nodes2 = node.elements();                for (Element node2 : nodes2) {                    if (node2.getName().equals(CNode)                            && node2.getData().toString().equals(CValue)) {                        for (Element node3 : nodes2) {                            if (node3.getName().equals(Node)) {                                node3.setText(newValue);                                flag = true;                                break;                            }                        }                        break;                    }                }            }            FileWriter fw = new FileWriter(this.getClass().getClassLoader()                    .getResource(xmlPath).getPath());            XMLWriter writer = new XMLWriter(fw);            writer.write(doc);            fw.close();            writer.close();        } catch (Exception e) {            e.printStackTrace();        }        return flag;    }


当我多次修改的时候发现todayLastSendTime并没有修改成功,单步调试的时候是成功了,但是修改todaySendCount的同时又把todayLastSendTime修改成原来的。我是在tomcat下运行,但是我用junit测试的时候没有这个问题。
Java code
modifyXml("MessageUsers.xml", "name", name,"todayLastSendTime",todayLastSendTimeStr);modifyXml("MessageUsers.xml", "name", name,"todaySendCount", todaySendCount + "");


[解决办法]

应该是在第二次修改todaySendCount时,传进来的doc里todayLastSendTime的值还是改之前的值吧。
modifyXml方法只是修改一个结点的值,不牵扯到改上次的值啊。调试一下,第二次修改todaySendCount时,一进来,里面todayLastSendTime的值是不是已经是改之前的了?
应该是在执行modifyXml方法前,todayLastSendTime的值读到的就有问题。

读书人网 >J2EE开发

热点推荐