当前位置:编程学习 > JAVA >>

java中用DOM操作XML,插入不了节点,麻烦看一下,浪费了一天时间在这上面了

我的需求是这样的,有一个equipment对象,需要把这个对象里面的几个属性作为一个新的元素添加到XML文件中,XML文件现在的结构如下:
<equipments>
    <equipment>
       <checkTime>...</checkTime>
       ...
    </equipment>
</equipments>

添加节点后变成如下:
<equipments>
    <equipment>
       <checkTime>...</checkTime>
       ...
    </equipment>
    <equipment>
       <checkTime>...</checkTime>
       ...
    </equipment>
</equipments>

下面是我的代码,为什么执行后,文档并没有被改变呢,还是老样子,节点添加不进去,这个问题浪费我一天时间了,希望会的同学帮帮忙,感激。
代码:

DocumentBuilderFactory docBFactory = DocumentBuilderFactory.newInstance(); // 文档操作工厂类
DocumentBuilder docBuilder = docBFactory.newDocumentBuilder(); // 文档操作对象
Document doc = docBuilder.parse(file); // 文档对象
Element docEle = (Element) doc.getElementsByTagName("equipments").item(0); // 获取根节点
Element equipElement = doc.createElement(PRE_ELEMENT); // 创建一个设备节点
Text checkTimeNode = doc.createTextNode(PRE_ELEMENT_NODE_CHECKTIME);// 创建一个检查时间文本元素
checkTimeNode.setNodeValue(equipment.getCheckTime());
equipElement.appendChild(checkTimeNode); // 把这个文本元素添加到设备节点中

Text barCodeNode = doc.createTextNode(PRE_ELEMENT_NODE_BARCODE); // 创建一个条形码文本元素
barCodeNode.setNodeValue(equipment.getBarCode());
equipElement.appendChild(barCodeNode);

Text cpuStatusNode = doc.createTextNode(PRE_ELEMENT_NODE_CPUSTATUS);// 创建一个CPU状态文本元素
cpuStatusNode.setNodeValue(equipment.getCPUStatus());
equipElement.appendChild(cpuStatusNode);

Text memoryStatusNode = doc.createTextNode(PRE_ELEMENT_NODE_MEMORYSTATUS);// 创建一个检查内存状态元素
memoryStatusNode.setNodeValue(equipment.getMemoryStatus());
equipElement.appendChild(memoryStatusNode);

docEle.appendChild(equipElement); // 把设备节点添加到根节点内部的最后面去


这个问题浪费我一天时间了,希望会的同学帮帮忙,感激。 --------------------编程问答-------------------- 用Dom4J吧,一般的情况1个小时都能从入手到搞定 --------------------编程问答-------------------- 你有把新生成的XML数据从新写入到XML文档中吗?还是说直接这样就没了?
没有的话这样试试
Transformer tf = null;
TransformerFactory tff = null;
  tf.setOutputProperty(OutputKeys.ENCODING, "GB2312");
tf.transform(new DOMSource(document对象), new StreamResult(
new FileOutputStream(File对象)));

看看行不
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,