文章目录

  • properties文件读取
  • xml文件读取
  • 一个方法解析xml里所有文件节点内容

常见的两种资源文件是后缀为:properties和xml的
而静态资源文件就是,不同用户访问到的都是同一份内容,例如:css、js、html、图片、视屏等

properties文件读取

properties文件的解析方式有java.util.properties这个类来完成
根据存放位置

 1、根目录下Xxx.class.getResourceAsStream("/config.properties");2、与读取配置文件的类在同一包Xxx.class.getResourceAsStream("config2.properties");3、WEB-INF(或其子目录下)ServletContext application = this.getServletContext();InputStream is = application.getResourceAsStream("/WEB-INF/config3.properties");为什么放在WEB-INF的文件必须要全局上下文才能取到呢?原因:WEB-INF是一个安全目录,也就是不能被外界访问的一个目录,只能通过内部配置web.xml通过servlet来访问

当我的文件在我的根目录下(Source Folder)

 public static void main(String[] args) throws IOException {//将当前同包下的db.properties资源文件转换成输入流
//      斜杆/ 代表根目录InputStream in = PropertiesDemo.class.getResourceAsStream("/db.properties");Properties p=new Properties();p.load(in);System.out.println(p.getProperty("uname"));System.out.println(p.getProperty("upass"));}

结果获取到了我db.properties文件的两个值

如果把文件放入WEB-INF中,有没有用上下文来获取时,就会报空指针异常

所以正确的获取方式是,写一个servlet,通过application来获取值,不同的是还有配置web.xml,同web来把文件的值打印到控制台

public class proServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req, resp);}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext context = req.getServletContext();    //声明一个全局上下文InputStream in = context.getResourceAsStream("/WEB-INF/db.properties");//获取到WEB_INF的文件Properties p=new Properties();p.load(in);System.out.println(p.getProperty("uname"));//打印到控制台System.out.println(p.getProperty("upass"));}
}

xml文件读取

根据文件存在的位置来取,是跟properties文件是一样的

xml文件:应该有一个工具类来完成
jdk/jdom
sax解析 由上往下解析 (移动端用的比较多)
dom4j解析 由外到内解析(目前最火的解析方式)

首先这是我的xml文件

我要通过dom4j+xpath解析xml文件,首先我们需要导入两个jar包dem4和jaxen(没有的可以去网上下载)
现在我们要获取到sid=s003的name值

 public static void main(String[] args) throws DocumentException {InputStream in = XmlParseDemo.class.getResourceAsStream("students.xml");SAXReader reader = new SAXReader();Document doc = reader.read(in);
//      System.out.println(doc.asXML());//输出整个xml文件的值
//      1、获取到所有的学生List<Element> stules = doc.selectNodes("/students/student");//查student这一组节点
//      2、遍历for (Element stu : stules) {if("s003".equals(stu.attributeValue("sid"))) {Node nameEle = stu.selectSingleNode("name");//查name单个节点
//              System.out.println(nameEle.asXML());//打印<name>小王</name>System.out.println(nameEle.getText());//打印小王,这是第一种方法,通过遍历判断}}
//      做判断、如果sid=s003那么拿到小王Node stuEleS003 = doc.selectSingleNode("/students/student[@sid='s003']");System.out.println(stuEleS003.selectSingleNode("name").getText());}

两种方法都放出来了,所以应该打印了两个小王

一个方法解析xml里所有文件节点内容

xml可以作为文件传输,每一个接口传输的xml节点及节点内容都不相同,怎么用一个xml解析方法解析多种格式的文件

思路:利用递归,从指定节点Element node开始,递归遍历其所有子节点,判断是否还存在子节点,直到没有子节点为止

案例:xml文件还是上面那个student.xml

 public static void main(final String[] args) throws Exception {Demo test = new Demo();test.testGetRoot();}/*** 获取文件的xml对象,然后获取对应的根节点root*/public void testGetRoot() throws Exception {SAXReader sax = new SAXReader();// 创建一个SAXReader对象File xmlFile = new File("E:\\Desktop\\课件\\2、xml解析\\资料\\students.xml");// 根据指定的路径创建file对象Document document = sax.read(xmlFile);// 获取document对象,如果文档无节点,则会抛出Exception提前结束Element root = document.getRootElement();// 获取根节点getNodes(root);// 从根节点开始遍历所有节点}/*** 从指定节点Element node开始,递归遍历其所有子节点*/public void getNodes(final Element node) {// 当前节点的名称、文本内容和属性System.out.println( node.getTextTrim());// 当前节点内容List<Attribute> listAttr = node.attributes();// 当前节点的所有属性for ( Attribute attr : listAttr) {// 遍历当前节点的所有属性String name = attr.getName();// 属性名称String value = attr.getValue();// 属性的值System.out.println("属性名称:" + name + "---->属性值:" + value);}// 递归遍历当前节点所有的子节点List<Element> listElement = node.elements();// 所有一级子节点的listfor ( Element e : listElement) {// 遍历所有一级子节点getNodes(e);// 递归}}

最后结果为:那student.xml的所有节点内容全部打印

关于xml解析的知识点相关推荐

  1. dom4j 解析xml文件(涉及知识点:dom4j,XPath,递归)

    涉及知识点 :dom4j, XPath, 递归 知识点: 节点是比元素更大一层的概念, 元素节点仅仅是节点中的一种. 元素,属性,名字空间,注释,文本内容,处理指令,还有整个文档(即看成根节点),这7 ...

  2. XML——XML解析之DOM

    1.XML编程 XML编程,就是对XML文件进行crud操作. 那么为什么要用java或者C/C++对XML进行crud操作呢? 1.XML作为数据传递需要解析 2.XML作为配置文件需要读取 3.X ...

  3. 传智播客 java ppt_传智播客XML解析ppt课件

    PPT内容 这是传智播客XML解析ppt课件下载,主要介绍了java解析xml四种方式:Java技术 + XML:基于树的处理:DOM 的问题:SAX的行为:SAX代码例子:SAX的优势:DOM4J, ...

  4. DOM4J——强大而易用的XML解析器,我们不只是有数据库

    DOM4J--强大而易用的XML解析器 DOM4J 一.DOM4J的导入使用 二.认识一些关键角色 三.快速开始 3.1创建一个XML 3.2读取XML节点(历遍和指定) 3.3规范输出 结尾 欢迎关 ...

  5. XML 解析技术:DOM4j

    前言: 我一直以来就坚信一句话:不积跬步无以至千里,不积小流无以成江海.可能很多人对一些基础概念会选择性忽略,但往往基础和知识理解深度决定你的上限. 今天给大家带来一个对框架以及容器源码理解提升的知识 ...

  6. c语言解析xml字符串_Python XML解析

    Python XML解析 什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是 ...

  7. XML解析简介及Xerces-C++简单使用举例

    XML是由World WideWeb联盟(W3C)定义的元语言.它已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.XML在不同的语言里解析方式 ...

  8. Java XML解析工具 dom4j介绍及使用实例

    Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...

  9. C++ XML解析之TinyXML篇[转]

    最 近使用TinyXML进行C++ XML解析,感觉使用起来比较简单,很容易上手,本文给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方法来完 成.以后的文章里会讲 ...

最新文章

  1. 小机上监控AIX和数据库管理系统的运行情况直到性能优化(SQL语句优化和排除硬件问题)...
  2. Android零基础入门第11节:简单几步带你飞,运行Android Studio工程
  3. “他们”最想要的圣诞礼物是你的...
  4. 14个jQuery图片放大编辑插件汇总
  5. JAVA关键字及作用
  6. 博客美化的源码(标签,小老鼠,时钟,二次元,雪花,QQ聊天等)
  7. Teams会议聊天中无法添加其他人解决方案
  8. 《红楼梦》的香气空白
  9. Titanic 生存预测(上)
  10. 韩国电影《醉画仙》,画仙的奋斗史。。。???
  11. 关于Android 在线预览PDF文件
  12. 【Linux配置五】 Ubuntu18.04+kalibr标定工具箱安装编译
  13. adobe flash media service5简单使用
  14. Camera效果测试-色彩准确性及饱和度测试
  15. 做计算机实验报告的总结,制作网线实验报告与总结
  16. appium安装及使用
  17. Cesium基础知识-加载json数据
  18. 腾讯地图初始化以及解析和逆解析
  19. cpld与单片机通信教程-并口和spi
  20. RH850开发板StarterKit示例程序分析--R_ADCA0_Init();ADC初始化

热门文章

  1. 【无标题】尤破金11.26黄金原油晚间多空行情策略分析及美原油实时操作建议指导
  2. Treeview使用方法
  3. 香港韩国比较快的 DNS地址
  4. win10录屏文件在哪?如何找到录制后的文件
  5. 图像特征-Harris角点检测
  6. 【调参12】ReLU激活函数使用指南
  7. 鼠标悬浮给图片加边框,适合大型展示
  8. 【基因图谱(react 版本)】
  9. 【微信小程序】-- WXML 模板语法 - 事件绑定 -- tap input (十)
  10. 苹果电脑双系统如何删除Windows系统?