迭代xml并修改java中的值

时间:2018-04-30 19:08:36

标签: java xml spring xml-parsing domparser

我有一个像下面这样的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>
你可以在我出错的地方纠正我。 感谢

0 个答案:

没有答案