1 public ApiConfig(String configFilePath) throws DocumentException{ 2 SAXReader reader = new SAXReader(); 3 File xml=new File(configFilePath); 4 Document document = reader.read(xml); 5 //获取根元素 6 Element rootElement = document.getRootElement(); 7 8 //将根元素下"rootUrl"元素的值去除空格后,赋值给一个String 9 rootUrl = rootElement.element("rootUrl").getTextTrim(); 10 //注解:取消警告,将根元素下获取到的所有"params"的子元素赋值到List中 11 @SuppressWarnings("unchecked") 12 List<Element> paramElements = rootElement.element("params").elements( 13 "param"); 14 //对List进行循环,将获取到的值put到HashMap中 15 paramElements.forEach((ele)->{ 16 params.put(ele.attributeValue("name").trim(), 17 ele.attributeValue("value").trim()); 18 }); 19 @SuppressWarnings("unchecked") 20 List<Element> headerElements = rootElement.element("headers").elements( 21 "header"); 22 headerElements.forEach((ele)->{ 23 headers.put(ele.attributeValue("name").trim(), 24 ele.attributeValue("value").trim()); 25 }); 26 Element projectEle = rootElement.element("project_name"); 27 if(projectEle!=null){ 28 ReportUtil.setReportName(projectEle.getTextTrim()); 29 } 30 } 31 32 private Map<String,String> params = new HashMap<String, String>(); 33 34 private Map<String,String> headers = new HashMap<String, String>();
代码解析:
1、读取xml数据
SAXReader可以通过多种方式读取xml数据,并返回Document格式的对象。通过查看源码,可以看出read()方法接收File,InputStream和URL等格式的参数来读取相应的xml数据。读取xml文档和xml格式的字符串两种方式。当然,字符串要根据相应的编码转成输入流才能被SAXReader读取。
2、解析xml数据
读取到Document对象后,我们使用getRootElement()方法获取根元素,返回的是一个Element对象。
3、获取子元素数据
获取根元素后,便可以一层一层的去获取他的子元素信息。如果知道子元素的标签名称,便可以直接调用element("name")方法获取该子元素。如果不知道子元素的名称,或者想直接获取该元素下的全部子元素,可以调用elements()方法获取一个包括全部元素的list,然后进行下一步的处理。
4、输出元素信息
调用getName()方法获取当前元素的元素名,attributeValue()获取属性名。如果当前元素没有子元素,则调用getText()方法获取元素值。