итерация XML и изменение значений в Java - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть 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>

Не могли бы вы исправить меня, если я ошибся. Спасибо

...