首页 » Web前端 » php读取properties技巧_JavautilProperties和dom4j读写properties和xml

php读取properties技巧_JavautilProperties和dom4j读写properties和xml

访客 2024-11-26 0

扫一扫用手机浏览

文章目录 [+]

看一下项目中常见的jdbc.properties文件:

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/helloJavajdbc.usename=rootjdbc.password=root

Java中常用java.util.Properties类来处理.properties文件。
下面,我们用Java代码来演示一下这个jdbc.properties的创建、读写。

php读取properties技巧_JavautilProperties和dom4j读写properties和xml

代码中紧张包括:createProp()、setProp()和readPorp()方法。

php读取properties技巧_JavautilProperties和dom4j读写properties和xml
(图片来自网络侵删)

1.createProp()通过字符流一次性地输入并创建了jdbc.properties文件;

public class useProperties { private static String userpath = System.getProperty("user.home"); private static String configStr = "jdbc.driver=com.mysql.jdbc.Driver\n" + "jdbc.url=jdbc:mysql://localhost:3306/helloJava\n" + "jdbc.username=root\njdbc.password=root"; public static void createProp (String data,String path){ File f = new File(path); try(FileWriter fr = new FileWriter(f)){ char[] cs = data.toCharArray(); fr.write(cs); System.out.println("jdbc.properties文件已创建成功!
路径是:" + path); } catch(IOException e){ e.printStackTrace(); } }

2.setProp() 通过Properties p = new Properties(); p.setProperty()和p.store()的办法,逐个输入key和value值的办法向jdbc.properties文件写入新的键值对(覆盖掉原文件)。

public static void setProp(String path){ Properties p = new Properties(); String url = "jdbc:mysql://localhost:3306/helloLyon"; String driver = "org.gjt.mm.mysql.Driver"; String username = "root"; String password = "admin"; try (InputStream fis = new FileInputStream(path); OutputStream fos = new FileOutputStream(path)) { //准备文件输入流fis和文件输出流fos p.load(fis); //加载输入流到Properties工具p p.setProperty("jdbc.url",url); p.setProperty("jdbc.driver",driver); p.setProperty("jdbc.username",username); p.setProperty("jdbc.password",password); //输出流存至p p.store(fos,"更新键值对"); System.out.println("新的键值对已成功写入文件:" + path); } catch (IOException e) { e.printStackTrace(); } }

3.readProp()方法演示了用for循环遍历所有key-value。
当然,除了遍历所有的key-value还可以用getProperty()方法来获取指定key的value值。

public static void readProp(String path){ Properties p = new Properties(); try (BufferedReader bf = new BufferedReader(new FileReader(path))){ //读取办法有多种,此处也可以用:FileInputStream fs = new FileInputStream(path)... p.load(bf); System.out.println("\n用for循环查看所有的key——value信息:"); for (Object key : p.keySet()) { System.out.println(key + "=" + p.get(key)); } } catch (IOException e) { e.printStackTrace(); } }

完全代码及运行结果如下:

运行后生产的jdbc.properties文件如下:

二、.xml文件的读写

最初,XML 措辞仅仅是意图用来作为 HTML 措辞的替代品而涌现的,但是随着该措辞的不断发展和完善,人们越来加倍现它所具有的优点:例如标记措辞可扩展,严格的语法规定,可利用故意义的标记,内容存储和表现分离等等上风注定了该措辞从出身之日起就会走向辉煌。
XML 措辞在成为 W3C 标准之后进入到了一个快速发展的期间,当然它本身所具有的一系列优点和上风也注定了各大技能厂商对它的偏爱,Java 作为软件行业的一种开拓技能也迅速作出了反应,涌现了多种对 XML 支持的工具.

XML 三种解析办法简介

大名鼎鼎的 DOM

说它大名鼎鼎可是一点不为过,DOM 是 W3C 处理 XML 的标准 API,它是许多其它与 XML 处理干系的标准的根本,不仅是 Java,其它诸如 Javascript,PHP,MS .NET 等等措辞都实现了该标准, 成为了运用最为广泛的 XML 处理办法。
当然,为了能供应更多更加强大的功能,Java 对付 DOM 直接扩展工具类有很多,比如很多 Java 程序员耳熟能详的 JDOM,DOM4J 等等, 它们基本上属于对 DOM 接口功能的扩充,保留了很多 DOM API 的特性,许多原来的 DOM 程序员乃至都没有任何障碍就闇练节制了其余两者的利用,直不雅观、易于操作的办法使它深受广大 Java 程序员的喜好。

绿色环保的 SAX

SAX 的应运而生有它分外的须要,为什么说它绿色环保呢,这是由于 SAX 利用了最少的系统资源和最快速的解析办法对 XML 处理供应了支持。
但随之而来繁琐的查找办法也给广大程序员带来许多困扰,常常令人头痛不已,同时它对 XPath 查询功能的支持,令人们对它又爱又恨。

默默无闻的 Digester:XML 的 JavaBean 化

Digester 是 apache 基金组织下的一个开源项目,笔者对它的理解源于对 Struts 框架的研究,是否有很多程序员想要一解各大开源框架的设计乃至想要自己写一个功能强大的框架时会碰到这样一个难题: 这些形形色色的用 XML 措辞标记的框架配置文件,框架底层是用什么技能来解析呢? DOM 解析耗费韶光,SAX 解析又过于繁琐,况且每次解析系统开销也会过大, 于是,大家想到须要用与 XML 构造相对应的 JavaBean 来装载这些信息,由此 Digester 应运而生。
它的涌现为 XML 转换为 JavaBean 工具的需求带来了方便的操作接口,使得更多的类似需求得到了比较完美的办理方法, 不再须要程序员自己实现此类繁琐的解析程序了。
与此同时 SUN 也推出了 XML 和 JavaBean 转换工具类 JAXB,有兴趣的读者可以自行理解。

三种解析办法比较

DOM

优缺陷:实现 W3C 标准,有多种编程措辞支持这种解析办法,并且这种方法本身操作上大略快捷,十分易于初学者节制。
其处理办法是将 XML 全体作为类似树构造的办法读入内存中以便操作及解析,因此支持运用程序对 XML 数据的内容和构造进行修正,但是同时由于其须要在处理开始时将全体 XML 文件读入到内存中去进行剖析,因此其在解析大数据量的 XML 文件时会碰着类似于内存透露以及程序崩溃的风险,请对这点多加把稳。

适用范围:小型 XML 文件解析、须要全解析或者大部分解析 XML、须要修正 XML 树内容以天生自己的工具模型

SAX

SAX 从根本上办理了 DOM 在解析 XML 文档时产生的占用大量资源的问题。
实在现是通过类似于流解析的技能,通读全体 XML 文档树,通过事宜处理器来相应程序员对付 XML 数据解析的需求。
由于其不须要将全体 XML 文档读入内存当中,它对系统资源的节省是十分显而易见的,它在一些须要处理大型 XML 文档以及性能哀求较高的场合有起了十分主要的浸染。
支持 XPath 查询的 SAX 使得开拓职员更加灵巧,处理起 XML 来更加的得心应手。
但是同时,其仍旧有一些不敷之处也困扰广大的开拓职员:首先是它十分繁芜的 API 接口令人望而生畏,其次由于其是属于类似流解析的文件扫描办法,因此不支持运用程序对付 XML 树内容构造等的修正,可能会有不便之处。

适用范围:大型 XML 文件解析、只须要部分解析或者只想取得部分 XML 树内容、有 XPath 查询需求、有自己天生特定 XML 树工具模型的需求

Digester/JAXB

优缺陷 : 由于其是在上述两者的根本上衍生出来的工具类,为的是知足将 XML 转换为 JavaBean 的分外需求,故而没有什么特殊明显的优缺陷。
作为大名鼎鼎的开源框架 Struts 的 XML 解析工具 Digester,为我们带来了将 XML 转换为 JavaBean 的可靠方法。

适用范围 : 有将 XML 文档直接转换为 JavaBean 需求。

——此段摘自:Java 处理 XML 的三种主流技能及先容

大略来说,比较常用的XML解析紧张有DOM解析和SAX解析,DOM解析优点突出可以对DOM文档树的内容和构造进行修正,但是须要加载全部xml文件用以构建文档树,故速率较慢,内存占用较高。
SAX解析则相反,速率较快但是不支持修正。

Java中常常用dom4j来解析xml文件。
dom4j顾名思义是利用DOM解析事理进行解析的。

本文代码用的是:dom4j-1.6.1.jar,实现创建和读取一个大略xml文件的效果。

代码紧张包括:createXML()和readXML()两个方法。

1.createXML()创建了一个大略的xml文件(school.xml):

public static void createXML(String path){ try { OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8");// 设置XML文件的编码格式 File file = new File(path); //创建DOM文档树根节点doc Document doc = DocumentHelper.createDocument(); //创建第一个节点school1 Element school1 = doc.addElement("加里敦大学"); //给school1添加子节点stu1 Element child1 = school1.addElement("学生"); //给stu1节点增加属性及子节点 child1.addAttribute("学号","001"); Element name1 = child1.addElement("姓名"); name1.setText("莱纳德"); Element high1 = child1.addElement("身高"); high1.setText("165"); //给school1添加子节点child2 Element child2 = school1.addElement("西席"); child2.addAttribute("职工号","001"); Element name2 = child2.addElement("姓名"); name2.setText("谢尔顿"); Element high2 = child2.addElement("身高"); high2.setText("185"); //创建XMLWriter工具,并将doc文档写入 XMLWriter writer = new XMLWriter(new FileWriter(file), format); writer.write(doc); writer.close(); System.out.println("XML文件创建成功!
路径是:" + path); } catch (IOException e) { e.printStackTrace(); } }

2.用readXML()方法遍历xml文档树中的节点和属性

public static void readXML(Element root){ System.out.println(root.getName()+":"+root.getText().trim() ); List<Attribute> attrList = root.attributes(); for(Attribute attr : attrList){ System.out.println(attr.getName()+ ":" + attr.getValue()); } List<Element> eleList = root.elements(); for(Element ele : eleList){ readXML(ele); } }

完全代码及运行结果如下:

标签:

相关文章

房山第一探寻历史文化名区的魅力与发展

房山区,位于北京市西南部,历史悠久,文化底蕴深厚。作为北京市的一个重要组成部分,房山区的发展始终与首都的发展紧密相连。房山区积极推...

Web前端 2025-02-18 阅读0 评论0

手机话费开钻代码数字时代的便捷生活

我们的生活越来越离不开手机。手机话费作为手机使用过程中的重要组成部分,其充值方式也在不断创新。手机话费开钻代码应运而生,为用户提供...

Web前端 2025-02-18 阅读0 评论0

探寻专业奥秘如何查询自己专业的代码

计算机科学已成为当今社会不可或缺的一部分。掌握一门专业代码对于个人发展具有重要意义。面对繁杂的学科体系,如何查询自己专业的代码成为...

Web前端 2025-02-18 阅读0 评论0