13. 基于自动化–JAVA之文件解析
一、Properties文件
properties文件作为项目中比较常用的一种配置文件,它的作用是可以将系统依赖的一些数据通过配置实现与代码的分离解耦
特点:以键值对的形式保存数据
二、解析properties文件
Properties properties = new Properties(); File file = new File("log4j.properties"); InputStream is = new FileInputStream(file); properties.load(is);
注意:
load方法需InputStream字节流对象,此输入流对象中必须已经包含了properties文件中的数据,所以创建此输入流的时候必须把此properties文件传出去
此种加载方式,数据加载到了properties对象中
public class testProperties { public static void main(String[] args) throws Exception { String filePath = "src/main/java/API/Web/log4j.properties"; loadProperties(filePath); } public static void loadProperties(String filePath) throws Exception { Properties properties = new Properties(); InputStream is = new FileInputStream(new File(filePath)); properties.load(is); System.out.println(properties.getProperty("log4j.appender.file")); } }
三、xml
1.XML:扩展性标记语言
特点:可扩展性,在遵循xml语法的前提下支持自定义和修改;标记语言,意味着也是以类似于html中的标签来定义的文档XML在项目中的使用更多的是作为数据载体而出现;XML和JSON都是一种数据载体
2.xml文档结构:
xml文档根html类似,也是一种树形结构,从上往下扩展
父、子以及同胞等术语用于描述元素之间的关系,父元素拥有子元素,相同层级上的子元素成为同胞
所有的元素都可以有文本内容和属性
3.xml语法:
<?xml version="1.0" encoding="UTF-8"?>
根元素:xml必须包含根元素,它是所有其他元素的父元素
所有元素有开始就有结束
大小写敏感
嵌套使用需要注意嵌套的顺序
<?xml version="1.0" encoding="UTF-8"?> <students> <student number="1001"> <name>张三</name> <age>21</age> <gender>男</gender> </student> <student number="1002"> <name>李四</name> <age>22</age> <gender>男</gender> </student> <student number="1003"> <name>王五</name> <age>18</age> <gender>女</gender> </student> </students>
四、dom4j解析
public class XmlDemo { public static void main(String[] args) throws DocumentException { String path = "src/main/java/API/Web/student.xml"; parseXml(path); } public static void parseXml(String path) throws DocumentException { //1.添加依赖:dom4j //2.创建解析器SaxReader对象 SAXReader reader = new SAXReader(); //3.获取document对象 Document document = reader.read(new File(path)); //4.获取根元素 Element root = document.getRootElement(); //5.获取根元素下的子元素 List<Element> studentElements = root.elements("student"); int i = 0; for (Element studentElement:studentElements) { i++; System.out.println("处理第【" + i + "】个student元素"); Element nameElement = studentElement.element("name"); Element ageElement = studentElement.element("age"); Element genderElement = studentElement.element("gender"); String name = nameElement.getText(); String age = ageElement.getText(); String gender = genderElement.getText(); System.out.println("name="+name+",age="+age+",gender="+gender); } } }