java dom添加节点_java用dom更新xml的有关问题,如何在子节点上添加节点
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);//將新的節點拼接到根節點
所以你得到的結果必然是這樣:
總結
以上是生活随笔為你收集整理的java dom添加节点_java用dom更新xml的有关问题,如何在子节点上添加节点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux mysql5.6编译_Lin
- 下一篇: java简易计算器考察什么_练习:用ja