特殊文件:XML文件,Properties属性文件【详解】

本文介绍了Java中Properties文件的使用,包括读取和写入键值对,以及XML文件的解析,特别是使用Dom4J库来操作XML文档,展示如何获取和处理XML数据结构。
摘要由CSDN通过智能技术生成

目录

1.Properties属性文件

2.特殊文件:XML文件       


1.Properties属性文件

        是一个Map集合(键值对集合),但是我们一般不会当集合使用。

        核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容。

2.使用Properties读取属性文件里的键值对数据

        

3.使用Properties把键值对数据写出到属性文件里去

package com.itheima.day11.teacher.pp;

import java.io.FileReader;
import java.util.Properties;
import java.util.Set;

public class PropertiesDemo {

    /*
    掌握
       使用Properties集合类去读取属性文件中的键值对信息并完成解析。

      .properties结尾的文件 叫 属性文件 也叫配置文件。
        里面存储数据的特点
           1:键值对形式
           2: 键不重复
           3: 文件后缀名是.properties
        文件在开发中是来存储   配置信息的。比如 连接数据库的用户名密码等...

       在开发中是怎么去读取这种文件呢?
          因为键值对的 所以Java提供了一个类型 Properties去专门去完成这类文件信息的存储(读取)
          Properties是Map的集合一个子类。
            特殊的子类---里面设定了  一个 读取  和  写出  properties文件的功能
     */
    public static void main(String[] args) throws Exception{
           //1:创建Properties对象 (键值对)
        Properties pp  = new Properties();
        System.out.println(pp);
        // 2: 使用load(输入流)功能,可以将流关联的文件中的 属性集信息 读取到 Properties中
        pp.load(new FileReader("day11\\src\\user.properties"));
        System.out.println(pp);


        //3:数据都读取到 pp集合中
        //获取键集
        //Set<Object> objects = pp.keySet();//使用父亲的方法 键的泛型是 Object
        Set<String> keys = pp.stringPropertyNames();//获取 键值对中所有的键  属性集中 属性的名字
        for (String key : keys) {
            //key 所有的键--- 属性的名字
            //    键对应的值  属性的值
//            Object o = pp.get(key);//使用父亲的方法 得到键是Object
           //  优化了一个方法
            String value = pp.getProperty(key);
            System.out.println(key+":"+value);
        }
        System.out.println("========================foreach遍历======");
        pp.forEach((k,v)-> System.out.println(k+":"+v));
    }
}


-------------------
package com.itheima.day11.teacher.pp;

import java.io.FileWriter;
import java.util.Properties;

public class PropertiesDemo02 {
    /*
     目标
       掌握使用Properties 将集合数据写到一个 属性集文件中。

     */
    public static void main(String[] args) throws Exception{
        //1:创建Properties对象  存储一些键值对数据。
        Properties pp = new Properties();
        // 可以使用父亲方法  可以用 但是不够精准
//        pp.put("",new Object());
        // 存都是字符串  自己 优化了方法  pp.setProperty(字符串键,字符串值)设置属性集
        pp.setProperty("李亚雷","张冠电");
        pp.setProperty("郭家琪","盆国歪");
        pp.setProperty("王振魁","卒衰瘦");
        //2:调用 store()功能 将集合数据写到指定文件中.
        pp.store(new FileWriter("day11\\src\\user2.properties"),"说明最好用英文 this is fanyici");

    }
}

2.特殊文件:XML文件       

        XML( 全称eXtensible Markup Language, 可扩展标记语言 )

        本质是一种数据的格式,可以用来存储复杂的数据结构和数据关系。

        1.XML的特点:

                1.XML中的“<标签名>” 称为一个标签或一个元素,一般是成对出现的。

                2.XML中的标签名可以自己定义(可扩展),但必须要正确的嵌套。

                3.XML中只能有一个根标签。

                4.XML中的标签可以有属性。

                5.如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成.xml。

        2.XML的语法规则  

        

3.XML的作用和应用场景

        本质是一种数据格式,可以存储复杂的数据结构和数据关系。

        应用场景:经常用来做为系统的配置文件;或者作为一种特殊的数据结构,在网络中进行传输。

4.读取XML文件中的数据:使用Dom4J解析出XML文件

        1.核心思想:文档对象模型

    2.使用步骤

                1.下载Dom4j框架,官网下载,官网地址: https://dom4j.github.io/

                2.在项目中创建一个文件夹:lib

                3.将dom4j-2.1.3.jar文件复制到 lib 文件夹

                4.在jar文件上点右键,选择 Add as Library -> 点击OK

                5.在类中导包使用

   3.得到Document对象和根元素对象

4.Element提供的方法

        

package com.itheima.day11.teacher.parsexml;

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

import java.util.List;

public class Demo {
    /*
      学习如何使用DOM4J技术解析xml文件


          以后我们如果用别的依赖jar包,就遵循别人提供的方式去玩 DOM4J!


     */
    public static void main(String[] args) throws Exception{
       /*
         如何获取根元素
           1:创建DOM4J 核心读取对象 SAXReader()
           2:调用 read(被解析xml文件位置)方法 得到文档对象(一棵树)
           3:文档调用 getRootElement方法得到 根元素
           元素类型 Element
        */
        //1:创建DOM4J 核心读取对象 SAXReader()
        SAXReader saxReader = new SAXReader();
        //2:调用 read(被解析xml文件位置)方法 得到文档对象(一棵树)
        Document document = saxReader.read("day11\\src\\helloworld.xml");
        // document 树
        //3:文档调用 getRootElement方法得到 根元素
        Element rootElement = document.getRootElement();
        System.out.println(rootElement);
        System.out.println(rootElement.getName());
        /*
          Element方法学习
             getName() 获取当前元素的名字
             List<Element> elements() 获取当前元素(标签)的所有子元素
             List<Element> elements(String childName) 获取当前元素(标签)的指定名称的子元素

         */
        // 4:获取 根元素下所有的子元素标签
//        List<Element> elements = rootElement.elements();//elements 根元素下的所有的子元素
        List<Element> elements = rootElement.elements("user");//elements 根元素下的所有的子元素
        System.out.println(elements.size());
        // 循环得到 每一个子元素标签
        for (Element element : elements) {
            System.out.println(element.getName());
        }

        System.out.println("======================");
        //根据名字  获取 people标签
        Element peopleE = rootElement.element("people");
        System.out.println("元素名字:"+peopleE.getName());
        //获取标签文本信息
        System.out.println("people元素的文本信息:"+peopleE.getText());

        // 根据名字  获取 user标签 如果获取单个 是第一个
        Element userE = rootElement.element("user");
        //  attributeValue(属性名)
        System.out.println("userE属性id:"+userE.attributeValue("id"));
        System.out.println("userE属性desc:"+userE.attributeValue("desc"));
        // 请解析出  userE 中 子标签的 的文本信息
//          userE.element("name").getText()
               //获取 userE 的name标签 的 文本信息
        // 获取指定子标签的文本信息
        System.out.println(userE.elementText("name"));
        System.out.println(userE.elementText("sex"));
        System.out.println(userE.elementText("地址"));
        System.out.println(userE.elementText("password"));
        System.out.println(userE.elementText("data"));
        System.out.println(userE.elementText("data1"));


    }
}

5.补充知识:约束XML文件的编写[了解]

        什么是XML文件的约束?

                就是限制XML文件只能按照某种格式进行书写。

        约束文档的分类

                DTD文档

                Schema文档

        1.DTD约束

students:根标签

student+:子标签,+是多个

最后一行name:student的属性名

2.Schema

        required:必填

  • 20
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值