IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> xml解析 -> 正文阅读

[Java知识库]xml解析

Java中配置文件的三种配置位置

一:配置文件存在位置有三种
? ①存放于根目录下,/代表获取src根目录的绝对路径
? ②存放于同一类的包下,不加/代表同类名包下的相对路径;
? ③存放于WEB-INF目录下

xml作用:

*.xml

*.properties

同包

package com.hmf;?

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
?* 1.同包?Text01.class.getResourceAsStream("db.properties");
?* Properties文件是一种资源文件
?* @author T440s
?*
?*/
public class Text01 {
?? ?public static void main(String[] args) throws Exception {
?? ??? ?InputStream ins = Text01.class.getResourceAsStream("db.properties");
?? ??? ?Properties pt=new Properties();
?? ??? ?pt.load(ins);
?? ??? ?System.out.println(pt.getProperty("uname"));
?? ??? ?System.out.println(pt.getProperty("upass"));
?? ?}

}
?

?src目录下

?③WEB-INF

package com.hmf;

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("/text")
public class TextServlet extends HttpServlet{
?? ?protected void service(HttpServletRequest req,HttpServletResponse rep) throws ServletException ,IOException{
?? ??? ?InputStream ins = req.getServletContext().getResourceAsStream("/WEB-INF/db.properties");
?? ??? ?Properties p=new Properties();
?? ??? ?p.load(ins);
?? ??? ?System.out.println(p.getProperty("uname"));
?? ??? ?System.out.println(p.getProperty("upass"));
?? ?}

}
?

下面是我报错的地方? 千万不要加双引号 加了就变成字符串了

二: 找s003的内容

思路
?? ??? ? ?1.读取到students.xml的的内容
?? ??? ? ?2.获取到所以students标签的内容
?? ??? ? ?3.获取到students标签所以的sid
?? ??? ? ?4.获取sid=s003时候,获取name标签内容

package com.hmf;

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;

public class Text02 {
?? ??? ?/**
?? ??? ? * 思路
?? ??? ? * 1.读取到students.xml的的内容
?? ??? ? * 2.获取到所以students标签的内容
?? ??? ? * 3.获取到students标签所以的sid
?? ??? ? * 4.获取sid=s003时候,获取name标签内容
?? ??? ? *?
?? ??? ? */
?? ?public static void main(String[] args) throws Exception {
?? ??? ?//获取文件的io流
?? ??? ?InputStream ins = Text02.class.getResourceAsStream("/students.xml");
?? ??? ?//创建xml文件的saxReader对象
?? ???
?SAXReader srd=new SAXReader();
?? ??? ?Document doc= srd.read("ins");
?? ??? ?//selectNodes:获取对应的对象 ?返回list
?? ???
?List<Element> stu = doc.selectNodes("/students/student");
?? ??? ?for (Element st : stu) {
?? ??? ?//attributeValue:获取指定的属性值
?? ??? ?
String sid=st.attributeValue("sid");
?? ??? ? ?if("s003".equals(sid)) {
?? ??? ?//selectSingleNode:获取对应的对象 ? 返回单个属于元素的对象
?? ??? ??? ?
Element nameEl = (Element) st.selectSingleNode("name");
?? ??? ??? ? System.out.println(nameEl.getText());
?? ??? ??? ?}
?? ??? ?}
?? ?}
}

?

三:例如

1:获取action中type的值

2:获取第二个action中type的值

3:获取第二个action所有forward的path

4:获取第二个action的第二个forward的path

package com.hmf;

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;

public class config {
?? ?public static void main(String[] args) throws Exception{
?? ??? ?//获取读取给文件的io流
?? ??? ?InputStream ins = config.class.getResourceAsStream("/config.xml");
?? ??? ?//创建读取xml文件的saxReader对象
?? ??? ?SAXReader sa = new SAXReader();
?? ??? ?//获取文件的document对象
?? ??? ?Document doc = sa.read(ins);
?? ??? ?//找到config下的所有action节点
?? ??? ?List<Node> node1 = doc.selectNodes("/config/action");
?? ??? ?//遍历action节点
?? ??? ?for (Node n : node1) {
?? ??? ?//将节点对象转换成为元素对象
?? ??? ?Element em=(Element)n;
?? ??? ?//找到type属性
?? ??? ?String value = em.attributeValue("type");
?? ??? ?System.out.println(value);
?? ??? ?}
?? ??? ?System.out.println("====");
?? ??? ?//config节点下path属性为/loginAction的action节点
?? ??? ? Node two = doc.selectSingleNode("/config/action[@path='/loginAction']");
?? ??? ? Element el=(Element)two;
?? ??? ? //获取该节点下的type属性
?? ??? ? String type = el.attributeValue("type");
?? ??? ? System.out.println(type);
? ? ? ? ?System.out.println("====");
?? ??? ?//获取config节点下的forward节点
?? ??? ?List<Node> forwardn = two.selectNodes("forward");
?? ??? ?for (Node node : forwardn) {
?? ??? ??? ?Element els=(Element)node;
?? ??? ?//获取config节点下的forward节点的path属性
?? ??? ??? ?String path = els.attributeValue("path");
?? ??? ??? ?System.out.println(path);
?? ??? ?}
?? ??? ?System.out.println("====");
?? ??? ?Node name = doc.selectSingleNode("/config/action[@path='/loginAction']/forward[@name='success']");
?? ??? ?Element elx=(Element)name;
?? ??? ?String twoPath = elx.attributeValue("path");
?? ??? ?System.out.println(twoPath);

?? ?}

}
?

?

?好啦 今天就到这里 希望可以帮助到你!!!

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-30 12:36:58  更:2021-07-30 12:38:11 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/21 9:04:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码