J2EE XML最详细解析

简介: J2EE XML最详细解析

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素。


相关文章
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
3207 1
|
8月前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
416 0
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
589 15
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
378 0
|
设计模式 存储 安全
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
914 140
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1453 29
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
577 4
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

推荐镜像

更多
  • DNS