关于项目自动化测试架构的改良计划 - 对于内容文件动作指令信息
我们分为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,如需转载请自行联系原作者