У меня есть 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);
}
}
Поскольку я новичок в domparser, я попробовал несколько подходов, но не выполнил свое требование.
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>
Не могли бы вы исправить меня, если я ошибся.
Спасибо