XML解析配置文件

XML

1.XML的作业

1.1 配置 (*.XML 和 *.propertines)
1.2 数据的交互(获取第三方数据)

2.JAVA中的3种配置位置

2.1 如何使用Propertines读取配置文件

  • ① *.propertines 文件以键值对的方式存储数据
  • ② 使用Propertines类读取配置文件

2.2 配置位置

  • ① 存放于根目录下,/代表获取src根目录的绝对路径
		InputStream ra = Demo.class.getResourceAsStream("/config.properties");
		//创建一个properties配置文件类
		Properties ppt = new Properties();
  • ② 存放于同一类的包下,不加/代表同类名包下的相对路径;
		InputStream ra = Demo.class.getResourceAsStream("config.properties");
		//创建一个properties配置文件类
		Properties ppt = new Properties();
  • ③ 存放于WEB-INF目录下
 	  ServletContext sc=this.getServletContext();
      InputStream is=sc.getResourceAsStream("/WEB-INF/db.properties");

3.dom4j+xpath解析XML文件

两个jar包 dom4j-1.6.1.jar 和 jaxen-1.1-beta-6.jar

  • 1)xpath类似数据库中的select语句;
  • 2)Document有节点(Node)组成:元素节点、属性、文本等;
  • 3)selectNodes()获取节点下所有子节点;
  • 4)selectSingleNode()获取单个节点信息;
  • 5)xpath语法:/(定位路径)、@(获取属性)
InputStream ra =
				Demo.class.getResourceAsStream("student.xml");
		
		//创建SAXRead对象
		SAXReader read = new SAXReader();
		
		
		try {
			//加载xml文件输入流并返回Document对象
			Document doc= read.read(ra);
			
			//Document 有节点(Node)组成:元素节点,属性文本等
			//获取节点的方式
			//1.selectNodes()获取所有节点的集合
			//2.selectSingleNode()获取单个节点对象
			//Xpath语法:/(定位路径),@(获取属性)
			List selectNodes = doc.selectNodes("/students/student");
			
			//循环遍历/students/student下的元素节点
			for (Node node : selectNodes) {
				//node==student元素节点
				Element elm = (Element) node; 
				//获取当前student元素节点的属性
				String pid = elm.attributeValue("pid");
				System.out.println(pid);
				
				//获取student下的子节点元素,只有一个,用selectSingleNode
				Element nameElem = 
						(Element) elm.selectSingleNode("name");
			
				String nameTxT = nameElem.getText();
				System.out.println("name="+nameTxT);
			}
				System.out.println("---------------------------------");
				//获取某个student节点的name文本
				Element elname=
						(Element) doc.selectSingleNode("/students/student[@pid='p02']");
				String namet = (elname.selectSingleNode("name")).getText();
				System.out.println(namet);
				
				System.out.println("------------------------------");
				//简化
				Element nametx=
						(Element) doc.selectSingleNode("/students/student[@pid='p01']/name");
				System.out.println(nametx.getText());
			
		} catch (DocumentException e) {
			e.printStackTrace();
		}
		
	}
	-------------运行结果---------------------------
	p01
	name=张三
	p02
	name=李四
	p03
	name=王五
	---------------------------------
	李四
	------------------------------
	张三

Student.xml文件



	
		张三
	
	
		李四
		
	
		王五
			

你可能感兴趣的:(XML解析配置文件)