Java XML配置文件

XML配置文件

  1. XML是一种文件格式,也叫配置文件
  2. XML是一种可扩展的标记语言,用<>括起来,成对成对的使用
  3. XML的设计主旨是传输数据,而不是显示数据
    在这里插入图片描述

XML语法

  1. 第一行需要声明本文件是XML文件,每个xml文件必需的东西.
    <?xml version="1.0" encoding="utf-8" ?>
    version是版本号,encoding是编码格式,文本内容和文件的编码必须统一,可以都使用utf-8
  2. <>表示xml文档中的元素/标签(Element),标签有内容时成对成对出现,没有内容时可以使用单标签
    <000>内容</000> --> 有内容的成对标签
    <000/> --> 没有内容使用单标签
  3. 标签可以带有属性,格式: 属性=“属性值” --> id = 1
  4. xml文档中有且仅有一个根标签
  5. xml中严格区分大小写
  6. < !-- 注释内容–> --> 注释
<?xml version="1.0" encoding="utf-8" ?>
<!-- xml配置文件,第一行必须放声明,放注释或者其他的都会报错 -->
<contacts>
    <databases>
        <driverClassName>com.jdbc.mysql.Driver</driverClassName>
        <url>jdbc:mysql://39.106.167.142:3306/user</url>
        <username>root</username>
        <password>admin</password>
    </databases>
</contacts>

XML结构和DOM

  1. XML结构就是树状结构,从根标签开始开枝散叶,所以要求有且只有一个根标签
  2. XML是用来做数据传输的,最终是需要读到程序或者保存到文件中的,而从面向对象的角度看XML的各个组成部分都是由一个一个对象来描述的
  3. XML文件使用Document对象来描述
  4. 所有标签使用Element对象来描述
  5. 标签的属性使用Attr来描述
  6. 文本内容使用Text来描述
  7. 四种对象都继承自org.w3c.dom.Node类,在XML中一切都是节点
  8. 把XML加载到内存之后形成一个一个的对象,就叫DOM解析
  9. 在加载的时候一次性把整个XML文件加载到内存中,形成一棵DOM树(Document对象),之后操作的都是内存中的Document对象,所以如果要保存到磁盘需要做同步操作,将内存中的Document对象存进磁盘,而不仅仅只是在内存中保存.当然一次性把整个XML文件加载到内存可能会出现内存溢出问题,操作XML进行增删查改时虽然很简单,但是由于底层需要进行一步一步解析,所以效率不高.

操作XML配置文件

1. 获取Document对象: 将获取Document对象的方法封装成工具方法,提高代码重用性
public class DBUtil {
    // 由于处理异常时需要将对象放入局部代码块,所以先定义成成员,在局部进行初始化(创建实例)
    private static InputStream is = null;
    private static DocumentBuilder documentBuilder = null;

    // 静态代码块,字节码文件被加载进JVM虚拟机时运行,只运行一次,用来加载配置文件和解析Document对象
    static {
        /* 1. 获取XML文件相对字节码输出的路径
              使用线程获取当前对象,调用getResourceAsStream获取文件相对路径,使用文件输入流对象接收
              相对路径,适应性高,项目转移不会影响功能
              如果使用绝对路径项目转移会导致XML的绝对路径出现变化
         */
        is = Thread.currentThread()
                .getContextClassLoader()
                .getResourceAsStream("db.xml");

        // 2. 使用Document工厂类获取本身对象
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        try {
            // 3. 使用Document工厂对象获取DocumentBuilder对象
            documentBuilder = factory.newDocumentBuilder();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
    }

    // 获取Document对象的工具方法
    public static Document getDocument() {
        Document document = null;
        try {
            // 4. 使用DocumentBuilder对象解析XML文件获取Document对象
            document = documentBuilder.parse(is);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return document;
    }

}
2. 获取XML文件中的数据
public class DBDemo {
    public static void main(String[] args) {
        // 读取XML文件中的数据
        // 1. 获取Document对象,使用前面的工具类中的获取Document对象的工具方法
        Document document = DBUtil.getDocument();

        // 2. 获取根标签
        Element root = document.getDocumentElement();

        // 3. 获取根标签下子标签(databases),如果有多个则需要根据索引来取,使用item()方法取,取得的对象需要做强转
        Element databases = (Element) root.getElementsByTagName("databases").item(0);

        // 4. 继续往下取树的分支,直到分支最末的数据,取子标签都需要做强转,转成标签(Element)类型
        Element url = (Element) databases.getElementsByTagName("url").item(0);

        // 5. 获取文本内容,调用getTextContent()方法后返回的是字符串
        String urlTextContent = url.getTextContent();
        System.out.println(urlTextContent);
    }
}
3. 往XML文件中插入数据(用的不多,写入数据一般都是打开配置文件直接加,不会使用代码加,有需要了解的请留言,我私发源码)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值