java用dom更新xml的问题,怎么在子节点下添加节点?
有原始xml如下:
我想要得到修改后的结果为:
我的代码为:
publicstaticvoidmain(String[]args){
DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();
try{
DocumentBuilderdb=dbf.newDocumentBuilder();
Documentdoc=db.parse("D:/students.xml");
ElementeltName=doc.createElement("name");
Attrattr=doc.createAttribute("sn");
attr.setValue("04");
Attrattr2=doc.createAttribute("sn2");
attr2.setValue("0422");
eltName.setAttributeNode(attr);
eltName.setAttributeNode(attr2);
ElementeltRoot=doc.getDocumentElement();
eltRoot.appendChild(eltName);
doc2XmlFile(doc,"D:/students.xml");
}catch(ParserConfigurationExceptione){
e.printStackTrace();
}catch(SAXExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
}
/**
*将Document对象修改后写入到xml里面
*@paramdocumentDocument对象
*@paramfilenamexml文件路径
*@return
*/
publicbooleandoc2XmlFile(Documentdocument,Stringfilename){
booleanflag=true;
try{
/**将document中的内容写入文件中*/
TransformerFactorytFactory=TransformerFactory.newInstance();
Transformertransformer=tFactory.newTransformer();
/**编码*/
transformer.setOutputProperty(OutputKeys.ENCODING,"UTF-8");
DOMSourcesource=newDOMSource(document);
StreamResultresult=newStreamResult(newFile(filename));
transformer.transform(source,result);
}catch(Exceptionex){
flag=false;
System.out.println("更新"+filename+"出错:"+ex);
log.error("更新"+filename+"出错:"+ex);
ex.printStackTrace();
}
returnflag;
}
这样得到的结果为:
弄了一天了也没能把添加的name节点放到student节点下面,请教各位大侠了!
------最佳解决方案--------------------------------------------------------
你组织文档时候写的代码是这样的:
ElementeltRoot=doc.getDocumentElement();//获取根节点
eltRoot.appendChild(eltName);//将新的节点拼接到根节点
所以你得到的结果必然是这样: