Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 370|回复: 0

[xml学习]从XML中加载属性

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-10 04:05:52 | 显示全部楼层 |阅读模式
    JDK1.5(代号Tiger)中更新了java.util.Properties类,提供了从XML文件中读写key-value对属性的简单方法:loadFromXML()和storeToXML()

    1、基本加载属性的方法

    Sample属性文件:sample.properties

    foo=bar
    fu=baz

    加载属性的Sample程序   import java.io.FileInputStream;
    import java.util.Properties;
       
    public class LoadSampleProperties {

      
      
       
       
       

       
      
         public static void main(String[] args) throws Exception {
             Properties prop = new Properties();
             FileInputStream fis = new FileInputStream("props/sample.properties");
             prop.load(fis);
             prop.list(System.out);
             System.out.println("
    The foo property: " + prop.getProperty("foo"));
         }
    }

    输出结果如下:

    -- listing properties --
    fu=baz
    foo=bar
       
    The foo property: bar
       

    2、从XML中加载属性

    下面是Properties DTD清单:

    <?xml version="1.0" encoding="UTF-8"?>
    <!-- DTD for properties -->
    <!ELEMENT properties ( comment?, entry* ) >
    <!ATTLIST properties version CDATA #FIXED "1.0">
    <!ELEMENT comment (#PCDATA) >
    <!ELEMENT entry (#PCDATA) >
    <!ATTLIST entry key CDATA #REQUIRED>

    Sample XML属性文件:sample.xml(符合上面的Properties DTD)

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

    <properties>
            <comment>Hello</comment>
            <entry key="foo">bar</entry>
            <entry key="fu">baz</entry>
    </properties>

    <entry>标记指定具体一个属性,由key属性指定属性名,而<entry>标记的内容指定属性值
    <comment>标记可以用来指定注释

    从XML文件加载属性的Sample程序

    import java.io.FileInputStream;
    import java.util.Properties;
       
    public class LoadSampleXML {
       
         public static void main(String[] args) throws Exception {
             Properties prop = new Properties();
             FileInputStream fis = new FileInputStream("props/sample.xml");
             prop.loadFromXML(fis);
             prop.list(System.out);
             System.out.println("
    The foo property: " + prop.getProperty("foo"));
         }
    }

    输出的结果是一样的

        可以看出方法很简单:使用XML文件来保存属性,使用loadFromXML()方法替代原来的load()方法来加载XML文件中属性


    3、更新XML文件中的属性值

    Sample程序

    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.Properties;
       
    public class UpdateSampleXml {
       
         public static void main(String[] args) throws Exception {
             Properties prop = new Properties();
             FileInputStream fis = new FileInputStream("props/sample.xml");
             prop.loadFromXML(fis);
             prop.list(System.out);
             System.out.println("
    The foo property: " + prop.getProperty("foo"));
       
             prop.setProperty("foo", "Hello World!");
             prop.setProperty("new-name", "new-value");
             FileOutputStream fos = new FileOutputStream("props/sample.xml");
             prop.storeToXML(fos, "Store Sample");
             fos.close();
       
             fis = new FileInputStream("props/sample.xml");
             prop.loadFromXML(fis);
             prop.list(System.out);
             System.out.println("
    The foo property: " + prop.getProperty("foo"));
         }
    }

         上面的例子加载了sample.xml中的属性,更新了foo属性的值,并新加了new-name属性,调用storeToXML()方法保存到原文件中,并改变注释内容为Store Sample

    程序执行后的sample.xml的内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
    <properties>
       <comment>Store Sample</comment>
       <entry key="new-name">new-value</entry>
       <entry key="fu">baz</entry>
       <entry key="foo">Hello World!</entry>
    </properties>
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-5-8 06:10 , Processed in 0.307767 second(s), 38 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表