1.XML介绍
1.什么是XML
XML(eXtensible Markup Language,可扩展标记语言)是一种用于创建自定义标记的文本格式,它可以用于描述和存储各种数据和文档类型。它的主要标志是语法简洁,同时具备可扩展性,可读性好,易于处理和转换等特点。
XML的设计目标是为了能够在不同计算机系统之间进行数据交换,特别是互联网上的数据交换。XML的基本语法规则非常简单,通常由以下结构组成:
元素(Element):用于描述数据项或数据集合。
属性(Attribute):用于为元素提供附加的信息。
文本(Text):用于存储元素包含的数据内容。
注释(Comment):用于添加对文档内容的注释和解释。
指令(Instruction):用于提供有关文档的处理指令。
XML还支持创建和使用自定义标记和命名空间,可以根据需要定义新的标记和扩展现有的标记集合。这使得XML非常灵活和可扩展,也易于处理和转换成其它格式,如HTML、JSON等。
2.为什么要学习XML
学习XML技术可以使你掌握一种通用的数据交换和存储格式,扩展你的技术栈,并为你适应新的行业标准和业务需求打下坚实的基础。
3.XML的作用
1.数据交换
XML是一种通用的数据交换格式,被广泛应用于数据传输和存储。很多应用程序和系统都可以使用XML来交换数据,包括Web服务、数据库、应用程序之间的数据传输等。
2.数据存储
XML文件可以用来存储各种类型的数据和文档,包括配置文件、日志文件、报告等。在Web开发中,很多Web应用程序都使用XML来保存数据,如RSS、Atom等Web信息源格式。
3.数据处理
XML具有灵活的结构和可扩展的特性,可以用来表示复杂的数据结构和关系。使用XML可以轻松处理和查询大量的数据,并且可以方便地转换成其它格式,如HTML、JSON等。
4.Web开发
XML是Web开发中的一个重要技术,它可以用来描述页面结构、样式信息和数据内容。例如,使用XML可以创建可扩展的标记语言,如XHTML,同时可以使用XML与CSS和JavaScript等技术结合,创建交互性和动态性的Web应用程序。
5.行业标准
许多行业都采用XML作为其数据交换和存储的标准格式,如OA、电子商务、金融等领域。因此,了解XML技术可以使你更好地理解和应用行业标准和业务需求。
2.java中配置文件的三种配置位置及读取方式
模拟数据 在这里插入图片描述 • 1 • 2
1.同包
package com.yuan.dtd; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * 同文件下 * @author yuanh * */ public class demo1 { public static void main(String[] args) throws Exception { //通过类加载器加载配置文件(同文件下) InputStream inputStream = demo1.class.getResourceAsStream("db.properties"); //让Properties工具类对象,加载含有db.properties文件内容说对应的流 Properties p = new Properties(); p.load(inputStream); //打印db.properties文件里的值 System.out.println(p.getProperty("uname")); System.out.println(p.getProperty("upass")); System.out.println(p.getProperty("url")); System.out.println(p.getProperty("driver_Class")); System.out.println(p.getProperty("initPoolSize")); System.out.println(p.getProperty("maxPoolSize")); } } • 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
2.根路径
与同胞区别在与需要打一个/ • 1
package com.yuan.dtd; import java.io.IOException; import java.io.InputStream; import java.util.Properties; /** * 根路径下 * @author yuanh * */ public class demo1 { public static void main(String[] args) throws Exception { //通过类加载器加载配置文件(同文件下) InputStream inputStream = demo1.class.getResourceAsStream("/db.properties"); //让Properties工具类对象,加载含有db.properties文件内容说对应的流 Properties p = new Properties(); p.load(inputStream); //打印db.properties文件里的值 System.out.println(p.getProperty("uname")); System.out.println(p.getProperty("upass")); System.out.println(p.getProperty("url")); System.out.println(p.getProperty("driver_Class")); System.out.println(p.getProperty("initPoolSize")); System.out.println(p.getProperty("maxPoolSize")); } } • 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
3.WIN-INF安全路径
package com.yuan.dtd; 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; /** * Servlet implementation class demo2Servlet */ @WebServlet("/demo2.do") public class demo2Servlet 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 { //访问WEB-INF目录下的db.properties InputStream inputStream = request.getServletContext().getResourceAsStream("/WEB-INF/db.properties"); //让Properties工具类对象,加载含有db.properties文件内容说对应的流 Properties p = new Properties(); p.load(inputStream); //打印db.properties文件里的值 System.out.println(p.getProperty("uname")); System.out.println(p.getProperty("upass")); System.out.println(p.getProperty("url")); System.out.println(p.getProperty("driver_Class")); System.out.println(p.getProperty("initPoolSize")); System.out.println(p.getProperty("maxPoolSize")); } } • 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 • 31 • 32 • 33 • 34 • 35 • 36 • 37
三者输出的结果: • 1
3.demo4j的介绍及使用
demo4j是一个Java开发的轻量级框架,用于构建快速、简单、可靠的RESTful API应用程序。它提供了一个简单的框架来处理HTTP请求和响应、路由、参数验证、异常处理等方面的问题。demo4j框架还集成了一些最常用的技术,如Spring Boot、Hibernate、Swagger等,以提高开发效率和代码可维护性。该框架还使用了轻量级的容器,支持嵌入式服务器,使得开发和部署变得更加容易。总之,demo4j框架是一个优秀的Java RESTful API开发框架,它能够让开发者快速地构建高质量的应用程序。
案例数据: • 1
package com.yuan.dtd; import java.io.InputStream; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; /** * 获取xml文件中内容demo4j的解析 * @author yuanh * */ public class demo2 { public static void main(String[] args) throws Exception { //先获取到需要解析的配置文件 InputStream inputStream = demo2.class.getResourceAsStream("students.xml"); SAXReader reader = new SAXReader(); Document read = reader.read(inputStream); //获得里面的数据内容 // System.out.println(read.asXML()); List<Element> list = read.selectNodes("students/student");//拿到所有的student标签 for (Element element : list) { //拿到所有name标签 Element nameEle = (Element) element.selectSingleNode("name"); System.out.println(nameEle.asXML()); String text = nameEle.getText(); System.out.println(text);//拿到所有的name标签里的内容 String value = element.attributeValue("sid"); //拿到所有的编号 System.out.println(value); } } } • 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 • 31 • 32 • 33 • 34 • 35 • 36 • 37 • 38 • 39 • 40
结果打印 • 1
4.xpath介绍及使用
XPath中有两种基本的表达式:路径表达式和筛选器表达式。路径表达式描述了一系列位置,筛选器表达式用于进一步筛选节点。下面是一些XPath样例表达式:
语法
XPath的路径表达式使用路径运算符进行连接,常用的路径运算符包括/(根节点)、//(任意后代节点)、.(当前节点)、…(父节点)等。筛选器表达式使用方括号[]进行包裹,其中可以使用各种比较运算符、逻辑运算符等,还可以使用特定的XPath函数进行处理。
属性
- 节点类型(Node type):节点类型包括元素节点、属性节点、文本节点、注释节点、处理指令节点等。
- 轴(Axis):在XPath中,轴被用于从当前节点向其他节点导航。轴可以根据不同的关系来分类,比如父子关系、兄弟关系、祖先关系、后代关系等。
- 运算符(Operator):XPath支持一系列运算符,包括比较运算符、算术运算符、逻辑运算符等。
- 函数(Function):XPath提供了许多内置函数,包括数值运算、字符串处理、时间处理等方面的函数。
- 语句(Statement):XPath支持许多语句,包括if语句、for-each语句、while语句等,以实现对数据的处理和筛选。
案例:
1./students/student/name:选取根元素students下的所有student元素,再选取每个student元素下的name元素。
2./students/student/name/text():选取根元素bookstore下的所有students元素,再选取每个students元素下的student元素,最后选取name元素的文本内容。
3./students/student[@sid=‘s002’]:选取根元素students下的所有student元素,并筛选出student属性值为sid的s元002素。