栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

XML的解析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XML的解析

目录

一,java中配置文件的三种配置位置及读取方式

        ① 配置文件有什么好处:

        ②  各个地方的位置有什么讲究

二,dom4j 的使用

三,xpath  的使用

四,案例


一,java中配置文件的三种配置位置及读取方式

        ① 配置文件有什么好处:

                1.使代码更加灵活

                2.维护性更高

        ②  各个地方的位置有什么讲究

                1.同一层级:方便同步编码

编码方式:Demo2.class.getResourceAsStream("students.xml");

完整代码:

package com.ruojuan.servlet;

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


public class Dome1 {
	public static void main(String[] args) throws Exception {
		//同包
		InputStream in = Dome1.class.getResourceAsStream("db.properties");
		// .properties文件有一个专门类解析
		Properties p = new Properties();
		//此时p  就加载了 db.properties中所有的信息
		p.load(in);
		System.out.println(p.getProperty("uname"));
		System.out.println(p.getProperty("upass"));
	}
}

 

                2.根  目  录:一般不做频繁更改

编码方式:Demo2.class.getResourceAsStream("/students.xml");

完整代码:

package com.ruojuan.servlet;

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


public class Dome1 {
	public static void main(String[] args) throws Exception {
		//根目录
		InputStream in = Dome1.class.getResourceAsStream("/db.properties");
		// .properties文件有一个专门类解析
		Properties p = new Properties();
		//此时p  就加载了 db.properties中所有的信息
		p.load(in);
		System.out.println(p.getProperty("uname"));
		System.out.println(p.getProperty("upass"));
	}
}

                3.WEB-INF:安全目录

编码方式:context.getResourceAsStream("/WEB-INF/db.properties");

完整代码:

package com.ruojuan.servlet;

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("/Dom1Servlet")
public class Dom1Servlet 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 {
		//拿到servlet上下文
		InputStream in = request.getServletContext().getResourceAsStream("/WEB-INF/db.properties");
		Properties p = new Properties();
		p.load(in);
		System.out.println(p.getProperty("uname"));
		System.out.println(p.getProperty("upass"));
	}

}

                补充:如何访问安全目录

                

地址栏输入也不可取 

要先在servlet层转发运行

完整代码:

package com.ruojuan.xml;

import java.io.IOException;
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("/aa")
public class aa 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 {
		request.getRequestDispatcher("/WEB-INF/a.jsp").forward(request, response);
	}

}

二,dom4j 的使用

selectNodes             获取多个标签

selectSingleNode    获取单个标签

attributeValue           获取属性值

getText                      获取标签值

完整代码:

package com.ruojuan.servlet;

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;

public class Demo2 {
	public static void main(String[] args) throws Exception {
		//根目录
		InputStream in = Demo2.class.getResourceAsStream("students.xml");
		SAXReader sr = new SAXReader();
		//配置文件中所有内容获取到了
		Document read = sr.read(in);
		
//		selectNodes 根据标签名,返回标签集合
//		System.out.println(read.asXML());
//		List studentsEles = read.selectNodes("students");
//		System.out.println(studentsEles.size());
//		List studentEles = studentsEles.get(0).selectNodes("student");
//		System.out.println(studentEles.size());
		
//		selectNodes  根据标签名,返回单个标签,通常用于已经知晓该标签只会出现一次
		Element studentEle = (Element)read.selectSingleNode("students");
		List studentEles = studentEle.selectNodes("student");
		for (Element stuEle : studentEles) {
			System.out.println(stuEle.attributeValue("sid"));//attributeValue是拿到属性值
			System.out.println(stuEle.selectSingleNode("name").getText());//getText拿值
		}
	
	}
}
三,xpath  的使用
package com.ruojuan.servlet;

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;

public class Demo3 {
	public static void main(String[] args) throws Exception {
		// /代表层级,代表查找
		// @精确定位
		InputStream in = Demo3.class.getResourceAsStream("students.xml");
		SAXReader sr = new SAXReader();
		//配置文件中所有内容获取到了
		Document read = sr.read(in);
//		Element stus002 = (Element)read.selectSingleNode("/students/student[@sid='s002']/name");
//		System.out.println(stus002.getText());
		Element studentsEle = (Element)read.selectSingleNode("students");
		List stuEles = studentsEle.selectNodes("student");
		for (Element stuEle : stuEles) {
			if("s002".equals(stuEle.attributeValue("sid"))) {
				System.out.println(stuEle.selectSingleNode("name").getText());
			}
		}
		
	}
}
四,案例
package com.ruojuan.zy;

import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;


public class Dome1 {
	public static void main(String[] args) throws Exception {
		//根目录
		InputStream in = Dome1.class.getResourceAsStream("config2.xml");
		SAXReader sr = new SAXReader();
		//配置文件中所有内容获取到了
		Document read = sr.read(in);
		Element config = (Element)read.selectSingleNode("config");
		List configs = config.selectNodes("action");
		for (Element conf : configs) {
			System.out.println(conf.attributeValue("type"));
		}
	}
}
package com.ruojuan.zy;

import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dome2 {

	public static void main(String[] args) throws Exception {
		//根目录
		InputStream in = Dome1.class.getResourceAsStream("config2.xml");
		SAXReader sr = new SAXReader();
		//配置文件中所有内容获取到了
		Document read = sr.read(in);
		Element config = (Element)read.selectSingleNode("/config/action[@path='/loginAction']");
		System.out.println(config.attributeValue("type"));
	}
	
	
}
package com.ruojuan.zy;

import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dome3 {
	public static void main(String[] args) throws Exception {
		//根目录
		InputStream in = Dome1.class.getResourceAsStream("config2.xml");
		SAXReader sr = new SAXReader();
		//配置文件中所有内容获取到了
		Document read = sr.read(in);
		Element config = (Element)read.selectSingleNode("/config/action[@path='/loginAction']");
		List conf = config.selectNodes("forward");
		for (Element con : conf) {
			System.out.println(con.attributeValue("path"));
		}
		

	}
}
package com.ruojuan.zy;

import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Dome4 {
	public static void main(String[] args) throws Exception {
		//根目录
		InputStream in = Dome1.class.getResourceAsStream("config2.xml");
		SAXReader sr = new SAXReader();
		//配置文件中所有内容获取到了
		Document read = sr.read(in);
		Element config = (Element)read.selectSingleNode("/config/action[@path='/loginAction']");
		List conf = config.selectNodes("forward");
		for (Element con : conf) {
			if("b".equals(con.attributeValue("name"))) {
				System.out.println(con.attributeValue("path"));
			}
		}
	}
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/969859.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号