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