我们分为3个方法依次对于<add_elements>,<update_elements>,<remove_elements>进行解析:
对于<add_elements>内部遍历解析的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/** * add the new information which configured in original xml and finally generate the new xml */ publicstaticString addElementToXML(String xmlString ,XMLModifyInfoExtractor extractor,String originalFilePath) throwsException{ Document doc = null ;
doc = DocumentHelper.parseText(xmlString); extractor.extractModifyInfo(originalFilePath); //All the add information are provided by XMLModifyInfoExtractor List<AddElement> addElementInfoList = extractor.getAddElementInfoList(); List<Node> nodes ; for (AddElement addElement : addElementInfoList){
String testcaseXPath =addElement.getTestcaseXPath(); String path =addElement.getPath(); String value=addElement.getValue(); //make the value as a Element block Element newElementSnippet = DocumentHelper.parseText(value).getRootElement(); nodes = doc.selectNodes(path); for (Node node :nodes){
//if in the node is in matching testcase ,then remove it String nodeUniquePath = node.getUniquePath(); if (nodeUniquePath.indexOf(testcaseXPath) !=- 1 ){
//node.getParent().remove(node); //node.setText(value); Element addingPointElement = (Element) node; addingPointElement.add(newElementSnippet); } } } returndoc.asXML(); } |
对于<update_elements>内部元素进行遍历的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
/** * update the information which configured in original xml and finally generate the new xml */ publicstaticString updateElementFromXML(String xmlString ,XMLModifyInfoExtractor extractor,String originalFilePath) throwsException{ Document doc = null ;
doc = DocumentHelper.parseText(xmlString); extractor.extractModifyInfo(originalFilePath); //All the update information are provided by XMLModifyInfoExtractor List<UpdateElement> updateElementInfoList = extractor.getUpdateElementInfoList(); List<Node> nodes ; for (UpdateElement updateElement : updateElementInfoList){
String testcaseXPath =updateElement.getTestcaseXPath(); String path =updateElement.getPath(); String value=updateElement.getValue(); nodes = doc.selectNodes(path); for (Node node :nodes){
//if in the node is in matching testcase ,then remove it String nodeUniquePath = node.getUniquePath(); if (nodeUniquePath.indexOf(testcaseXPath) !=- 1 ){
node.setText(value); } } } returndoc.asXML(); } |
对于<remove_elements>中元素进行遍历解析的代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
/** * remove the information which configured in original xml and finally generate the new xml */ publicstaticString removeElementFromXML(String xmlString ,XMLModifyInfoExtractor extractor,String originalFilePath) throwsException{ Document doc = null ;
doc = DocumentHelper.parseText(xmlString); extractor.extractModifyInfo(originalFilePath); //All the remove information are provided by XMLModifyInfoExtractor List<RemoveElement> removeElementInfoList = extractor.getRemoveElementInfoList(); List<Node> nodes ; for (RemoveElement removeElement : removeElementInfoList){
String testcaseXPath =removeElement.getTestcaseXPath(); String path =removeElement.getPath(); nodes = doc.selectNodes(path); for (Node node :nodes){
//if in the node is in matching testcase ,then remove it String nodeUniquePath = node.getUniquePath(); if (nodeUniquePath.indexOf(testcaseXPath) !=- 1 ){
node.getParent().remove(node); } } } returndoc.asXML(); } |
最后,当执行3步骤动作系列转化之后,最终的xml文件就是包含最终的我们修改后的结果了。
本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1221752,如需转载请自行联系原作者