一.学习xml注释作用
1.什么是xml注释?
XML注解是一种用于描述XML文档结构和元素内容的标记语言。它是通过在XML文档中使用特殊的标记来定义文档结构和元素属性的。XML注解通常用于数据编码和数据交换的应用程序之间,以确保数据的一致性和互操作性。 XML注解具有良好的可扩展性和可读性,因此它通常是最常用的数据交换格式之一。
2.为什么要学习xml注释,有什么用途?
XML注解主要有以下几个用途:
1. 描述文档结构:XML注解可以定义和描述XML文档的结构,包括文档头、根节点、元素、属性和命名空间等,从而使数据格式更加清晰明了。
2. 标记重要元素:XML注解还可以标记文档中一些重要的元素,如验证规则、约束条件和数据类型等。
3. 数据交换:XML注解定义好的数据结构具有良好的可扩展性和互操作性,可以用于数据交换场合,如Web服务端和客户端之间的数据交换。
4. 数据持久化:XML注解可以将数据格式化为文本格式,从而将其存储在文件或数据库中,以实现数据的持久化。
5. 客户端解析:XML注解格式化的数据可以被客户端解析,并用于生成用户界面,提供数据查询和分析等功能。
3.java中配置文件位置和读取
1.在同一个包里
在这里我要读取config.properties里面的元素
代码截屏:
效果图:
源码:
InputStream in = demo2.class.getResourceAsStream("config.properties"); Properties p = new Properties(); // Properties加载文件所对应的流 p.load(in); System.out.println(p.getProperty ("driver")); System.out.println(p.getProperty("url"));
2.根目录
代码截屏,效果图:
源码:
InputStream in = demo2.class.getResourceAsStream("/config.properties"); Properties p = new Properties(); // Properties加载文件所对应的流 p.load(in); System.out.println(p.getProperty ("driver")); System.out.println(p.getProperty("url"));
3.web-inf安全路径
代码截屏,效果图:
源码:
package com.lz.parse; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 3.web-inf安全路径 */ @WebServlet("/z") public class z extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { InputStream in = request.getServletContext().getResourceAsStream("/WEB-INF/config.properties"); Properties p = new Properties(); // Properties加载文件所对应的流 p.load(in); System.out.println(p.getProperty ("driver")); System.out.println(p.getProperty("url")); } }
二.demo4j的使用
1.selectNodes
代码截屏,效果图:
2.selectStringNodes
代码,效果图:
3.attributeValus
代码,效果图:
4.getText
源码:
package com.lz.parse; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Properties; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; public class demo3 { public static void main(String[] args) throws Exception { // 1.selectNodes 获取所有节点 InputStream in = demo3 .class.getResourceAsStream("students.xml"); SAXReader sr=new SAXReader(); Document doc = sr.read(in); List<Element> stu = doc.selectNodes("/students/student"); for (Element element : stu) { // System.out.println(element.asXML()); // System.out.println("-----------------分割线------------"); // 2.selectStringNodes 获得单个节点 Element name = (Element) element.selectSingleNode("name"); // System.out.println("name标签:"+name.asXML()); // 3.getText 获取某个便签内容 // System.out.println(name.getText()); // 4.attributeValus 获取某个标签属性 System.out.println(element.attributeValue("sid")); } } }
5.实例:
源码:
package com.lz.parse; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.Properties; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; public class demo4 { public static void main(String[] args) throws Exception { /** XPath解析 * 实例 获取id=002 的学生 */ InputStream in = demo3 .class.getResourceAsStream("students.xml"); SAXReader sr=new SAXReader(); Document doc = sr.read(in); List<Element> stu = doc.selectNodes("/students/student"); for (Element element : stu) { Element name = (Element) doc.selectSingleNode("/students/student[@sid='s002']/name"); System.out.println(name.getText()); } } }