我有一个像下面这样的xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ns0:studentDetails>xmlns:e = "http://XXXXXXXXX/school/" category = "school">
<ns0:studentName>John</ns0:studentName>
<ns0:studentCode>3376</ns0:studentCode>
<ns0:studentCGPA>8.5</ns0:studentCGPA>
</ns0:studentDetails>
我想迭代xml并用新值替换旧值。 我正在从我的测试用例
传递文件路径到方法import org.junit.Test;
public class MyTest {
@Test
void testXmlModify(){
String filePath = "C:/Users/john/myxml.xml";
DOMParserModify.xmlModify(filePath);
}
}
由于我是新手,我尝试了一些方法,但没有达到我的要求。
public class DOMParserModify{
String filePath = "C:/Users/john/myxml.xml";
File xmlFile = new File(filePath);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
try {
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
doc.getDocumentElement().normalize();
xmlModify()方法如下:
public void xmlModify(Document doc) {
NodeList student = doc.getElementsByTagName("studentDetails");
Element element = null;
for(int i=0; i<stu.getLength();i++){
element = (Element) student.item(i);
String name = element.getElementsByTagName("StudentName").item(0).getNodeValue();
if(name.equalsIgnoreCase("John")){
element.setAttribute("Smith"));
}
String code = code.getElementsByTagName("studentCOde").item(0).getNodeValue();
if(code.equalsIgnoreCase("3376")){
element.setAttribute("7244"));
}
String cgpa = cgpa.getElementsByTagName("studentCGPA").item(0).getNodeValue();
if(cgpa.equalsIgnoreCase("8.5")){
element.setAttribute("9.2"));
}
}
}
更新的值应保存在同一个xml文件中,即myxml.xml 我的最终xml应该如下所示,并附有更新后的版本。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<ns0:studentDetails>xmlns:e = "http://XXXXXXXXX/school/" category = "school">
<ns0:studentName>Smith</ns0:studentName>
<ns0:studentCode>7244</ns0:statusCode>
<ns0:studentCGPA>9.2</ns0:statusCGPA>
</ns0:studentDetails>
你可以在我出错的地方纠正我。
感谢