XML解析

简介: XML解析

目录

概念 :

一.Java配置文件中的三种配置位置及读取方式

1.同包

2.根目录编辑

3. 安全目录WEB-INF

二.Java配置文件中的解析方式

1.常用解析方式

1.1selectNodes

1.2selectSingleNode

1.3getText

1.4attributeValue  

2.xpath解析


概念 :

XML即可扩展的标记语言,可以定义语义标记(标签),是元标记语言。XML不像超文本标记语言HTML,HTML只能使用规定的标记,对于XML,用户可以定义自己需要的标记。

XML文档以层级标签的形式来组织数据,多用于配置文件、存储静态数据、交换数据

一.Java配置文件中的三种配置位置及读取方式

1.同包

在同一个包中,我们可以直接通过加载器加载配置文件获取,并通过properties工具类去加载它的流对象

目录结构:

2.根目录

与同包不同的是要在文件名前要加/,获取到根目录,注:这里只能获取到java包下的根目录,也就是包中的Java Resource

目录结构:

package com.YU;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
 * 读取不同位置的配置文件
 * 1.同包
 * 2.根目录
 * 3.安全路径WEB-INF
 * @author 21879
 *
 */
public class Demo1 {
  public static void main(String[] args) throws Exception {
//    /**
//     * 同包:
//     * 通过类加载器加载配置文件
//     */
//    InputStream rs = Demo1.class.getResourceAsStream("db.properties");
//    Properties p = new Properties();
//    //让Properties工具类去加载获取文件的流对象
//    p.load(rs);
//    System.out.println(p.getProperty("url"));
    /**
     * 根目录
     */
    InputStream rs = Demo1.class.getResourceAsStream("/db.properties");
    Properties p = new Properties();
    //让Properties工具类去加载获取文件的流对象
    p.load(rs);
    System.out.println(p.getProperty("url"));
  }
}

3. 安全目录WEB-INF

package com.YU;
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;
@WebServlet("/WebINFServlet")
public class WebINFServlet extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    doPost(request, response);
  }
  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    //访问Web-INF目录下的db.properties
    InputStream is = request.getServletContext().getResourceAsStream("WEB-INF/db.properties");
    Properties p = new Properties();
    p.load(is);
    System.out.println(p.getProperty("url"));
  }
}

利用Servlet中的

InputStream is = request.getServletContext().getResourceAsStream("WEB-INF/db.properties");

去获取WEB-INF中的文件,这里需要注意的是使用getResourceAsStream获取时要指定WEB-INF的路径

二.Java配置文件中的解析方式

1.常用解析方式

1.1selectNodes

获取到所有的节点标签

1.2selectSingleNode

匹配到第一个返回的节点标签

1.3getText

获取到节点标签中的文本内容

1.4attributeValue  

获取到节点标签属性值

package com.YU;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
/**
 *  获取xml内容之DOM4J解析
 *  1.selectNodes
 *  2.selectSingleNode
 *  3.getText
 *  4.attributeValue
 * @author 21879
 *
 */
public class Demo2 {
  public static void main(String[] args) throws Exception {
    //1.先获取到需要解析的配置文件
    InputStream is = Demo2.class.getResourceAsStream("students.xml");
    SAXReader sr = new SAXReader();
    //读取流对象
    Document doc = sr.read(is);
    //2.获取到所有student标签中的内容
    List<Element> stuEle = doc.selectNodes("/students/student");
    for (Element element : stuEle) {
      //获取到student下名字为name的
      Element ele = (Element) element.selectSingleNode("name");
      //3.获取标签里面的文本内容
      System.out.println(ele.getText());
      //4.获取标签的属性值(根据所遍历的student标签中获取)
      System.out.println(element.attributeValue("sid"));
    }
  }
}

2.xpath解析

xpath解析需要搭配singlenode和getText使用

这里的xpath语法可以使用绝对定位,也可使用相对定位,下面的代码段都有展示

package com.YU;
import java.io.InputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
/**
 * 
 * @author 21879
 *
 */
public class Demo3 {
  public static void main(String[] args) throws Exception {
    //1.先获取到需要解析的配置文件
    InputStream is = Demo2.class.getResourceAsStream("students.xml");
    SAXReader sr = new SAXReader();
    //读取流对象
    Document doc = sr.read(is);
    //利用xpath获取到name标签中的文本值
//    Element element = (Element) doc.selectSingleNode("/students/student[@sid='s002']/name");
    Element element = (Element) doc.selectSingleNode("//student[@sid='s002']/name");
    System.out.println(element.getText());
  }
}


目录
相关文章
|
14天前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
112 0
|
7月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
1887 1
|
7月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
213 15
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
213 0
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
5月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
123 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
242 1

推荐镜像

更多
  • DNS
  • 下一篇
    开通oss服务