java用dom更新xml的问题,怎么在子节点下添加节点?

有原始xml如下:

我想要得到修改后的结果为:

我的代码为:

public static void main(String[] args) {

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

try {

DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse(“D:/students.xml”);

Element eltName = doc.createElement(“name”);

Attr attr = doc.createAttribute(“sn”);

attr.setValue(“04”);

Attr attr2 = doc.createAttribute(“sn2”);

attr2.setValue(“0422”);

eltName.setAttributeNode(attr);

eltName.setAttributeNode(attr2);

Element eltRoot=doc.getDocumentElement();

eltRoot.appendChild(eltName);

doc2XmlFile(doc, “D:/students.xml”);

} catch (ParserConfigurationException e) {

e.printStackTrace();

} catch (SAXException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

/**

* 将Document对象修改后写入到xml里面

* @param document Document对象

* @param filename xml文件路径

* @return

*/

public boolean doc2XmlFile(Document document, String filename) {

boolean flag = true;

try {

/** 将document中的内容写入文件中 */

TransformerFactory tFactory = TransformerFactory.newInstance();

Transformer transformer = tFactory.newTransformer();

/** 编码 */

transformer.setOutputProperty(OutputKeys.ENCODING, “UTF-8”);

DOMSource source = new DOMSource(document);

StreamResult result = new StreamResult(new File(filename));

transformer.transform(source, result);

} catch (Exception ex) {

flag = false;

System.out.println(“更新” + filename + “出错:” + ex);

log.error(“更新” + filename + “出错:” + ex);

ex.printStackTrace();

}

return flag;

}

这样得到的结果为:

弄了一天了也没能把添加的name节点放到student节点下面,请教各位大侠了!

——最佳解决方案——————————————————–

你组织文档时候写的代码是这样的:

Element eltRoot=doc.getDocumentElement();//获取根节点

eltRoot.appendChild(eltName);//将新的节点拼接到根节点

所以你得到的结果必然是这样:


版权声明:本文为weixin_42212792原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42212792/article/details/114737890