XML_Dom4j_工厂模式_commons-io工具包_Base64

2021/4/29 18:27:06

本文主要是介绍XML_Dom4j_工厂模式_commons-io工具包_Base64,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

这里写目录标题

    • XML Extensible Markup Language
      • XML的约束 DTD Schema
      • Schema约束
      • 上一级目录回退 用..
    • Dom4j 解析XML
      • XPath 直接定位属性或标签(解决子标签太深的问题)导入相关类库
      • Base64 64个字符来组成
      • new String(byte[])
    • 工厂模式(车工厂) 批量生产产品 批量生产对象 使用接口 是为了返回各种车的实现类 调用工厂类的方法来生产车,不需要自己new。生产车后可以重写接口的方法,使用车的功能

在这里插入图片描述

XML Extensible Markup Language

可扩展性的标记语言
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
编码存储为utf-8
在这里插入图片描述

在这里插入图片描述
既为开始又为结束
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
只允许有一个根标签
注释 在里面 ctrl+/
在这里插入图片描述
&less than
quotation 双引号
amd 与

在这里插入图片描述
character data 字符数字区
在这里插入图片描述
下面展示一些 内联代码片

// An highlighted block
<?xml version="1.0" encoding="utf-8" ?>

<persons>

    <person>
        <name>柳岩</name>
        <age>18</age>
        <sex>女</sex>
        <detail>
            年龄 &lt; &gt; &quot; &amp;
            <![CDATA[
                年龄 <<<<<<<<< 18 .>>>>
            ]]>
        </detail>
    </person>

    <person>
        <name>赵丽颖</name>
        <age>15</age>
        <sex>女</sex>
        <address/>
    </person>

</persons>

XML的约束 DTD Schema

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
PCDATA 只能是文本,不能是标签
在这里插入图片描述
在这里插入图片描述
下面展示一些 内联代码片

// An highlighted block books.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!--导入DTD约束-->
<!DOCTYPE books SYSTEM "bookshelf.dtd">

<books>
    <book>
        <name>Java入门到超神</name>
        <price>88.88</price>
        <author>左神</author>
    </book>

    <book>
        <name></name>
        <price></price>
        <author></author>
    </book>
</books>

下面展示一些 内联代码片

// An highlighted block bookshelf.dtd
<!ELEMENT books (book+)>
<!ELEMENT book (name,price,author)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT author (#PCDATA)>

Schema约束

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面展示一些 内联代码片

// An highlighted block books.xml
<?xml version="1.0" encoding="UTF-8" ?>

<!--导入约束 修改命名空间-->
<书架
    xmlns="http://www.itcast.cn/"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.itcast.cn/ bookshelf.xsd">
    <书>
        <书名></书名>
        <作者></作者>
        <售价></售价>
    </书>
    
    
</书架>

下面展示一些 内联代码片

// An highlighted block bookshelf.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.itcast.cn/"
           elementFormDefault="qualified">
    <xs:element name='书架'>
        <xs:complexType>
            <xs:sequence maxOccurs='unbounded'>
                <xs:element name='书'>
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name='书名' type='xs:string'/>
                            <xs:element name='作者' type='xs:string'/>
                            <xs:element name='售价' type='xs:double'/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

在这里插入图片描述

上一级目录回退 用…

在这里插入图片描述

Dom4j 解析XML

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
下面展示一些 内联代码片

// An highlighted block
package day15XMLDom4jFactoryModelcommons_ioBase64.XML解析;

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

import javax.xml.parsers.SAXParser;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;

public class Demo1 {
    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        SAXReader reader = new SAXReader(); //加强基本输入流,可以解析xml文件
        Document document = reader.read(new FileInputStream("src\\bean\\Contact.xml"));
        System.out.println("document = " + document);

        Element rootElement = document.getRootElement();//获得根标签
        System.out.println("rootElement = " + rootElement);

        //获得根标签的名字
        System.out.println("根标签的名字:"+rootElement.getName());

        //获得第一个指定名称的子标签
        Element firstContactEle = rootElement.element("contact");
        System.out.println("firstContactEle = " + firstContactEle);

        //获得id属性值
        String id = firstContactEle.attributeValue("id");
        System.out.println("id = " + id);
        String vip = firstContactEle.attributeValue("vip");
        System.out.println("vip = " + vip);

        //获得所有当前名称的子标签
        List<Element> elements = firstContactEle.elements();
        //遍历集合获取每个元素
        for (Element element : elements) {
            String name = element.getName();
            String text = element.getText();
            System.out.println(name+"->"+text);
        }
    }
}

下面展示一些 内联代码片

// An highlighted block Contact放到src下面
<?xml version="1.0" encoding="UTF-8"?>
<contactList>
    <contact id="1" vip="true">
        <name>潘金莲</name>
        <gender>女</gender>
        <email>panpan@itcast.cn</email>
    </contact>
    <contact id="2">
        <name>武松</name>
        <gender id="1000">男</gender>
        <email>wusong@itcast.cn</email>
    </contact>
    <contact id="3">
        <name>武大狼</name>
        <gender>男</gender>
        <email>wuda@itcast.cn</email>
    </contact>
</contactList>

在这里插入图片描述
下面展示一些 内联代码片

// An highlighted block Demo.java
package day15XMLDom4jFactoryModelcommons_ioBase64.XML解析.XML解析2;

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

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;

public class Demo {
    public static void main(String[] args) throws Exception {
        //定义联系人类
        //创建解析器
        SAXReader reader = new SAXReader();
        //解析XML
        Document document = reader.read(new FileInputStream("itheima\\src\\Contact.xml"));
        //得到根标签
        Element rootElement = document.getRootElement();
        //获得所有contact子标签
        List<Element> contacts = rootElement.elements("contact");
        //创建集合保存所有的联系人对象 {id,vip,name,gender,email}
        ArrayList<Contact> list = new ArrayList<>();
        //遍历获取每个contact标签,一个contact标签对应一个人
        for (Element contact : contacts) {
            String idStr = contact.attributeValue("id");
            int id = Integer.parseInt(idStr);
            String vipStr = contact.attributeValue("vip");
            boolean vip = Boolean.parseBoolean(vipStr);

            //直接获取子标签内容
//            System.out.println(contact.getName()+contact.getText());
            String name = contact.elementText("name");
            String gender = contact.elementText("gender");
            String email = contact.elementText("email");

            //根据数据创建Contact联系人对象
            Contact c = new Contact(id, vip, name, gender, email);
            list.add(c);
        }
        //遍历集合
        for (Contact contact : list) {
            System.out.println(contact);
        }

    }
}

下面展示一些 内联代码片

// An highlighted block
package day15XMLDom4jFactoryModelcommons_ioBase64.XML解析.XML解析2;

public class Contact {
    private int id;
    private boolean vip;
    private String name;
    private String gender;
    private String email;

    public Contact() {
    }

    public Contact(int id, boolean vip, String name, String gender, String email) {
        this.id = id;
        this.vip = vip;
        this.name = name;
        this.gender = gender;
        this.email = email;
    }

    /**
     * 获取
     * @return id
     */
    public int getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * 获取
     * @return vip
     */
    public boolean isVip() {
        return vip;
    }

    /**
     * 设置
     * @param vip
     */
    public void setVip(boolean vip) {
        this.vip = vip;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return gender
     */
    public String getGender() {
        return gender;
    }

    /**
     * 设置
     * @param gender
     */
    public void setGender(String gender) {
        this.gender = gender;
    }

    /**
     * 获取
     * @return email
     */
    public String getEmail() {
        return email;
    }

    /**
     * 设置
     * @param email
     */
    public void setEmail(String email) {
        this.email = email;
    }

    public String toString() {
        return "Contact{id = " + id + ", vip = " + vip + ", name = " + name + ", gender = " + gender + ", email = " + email + "}";
    }
}

下面展示一些 内联代码片

// An highlighted block
<?xml version="1.0" encoding="UTF-8"?>
<contactList>
    <contact id="1" vip="true">
        <name>潘金莲</name>
        <gender>女</gender>
        <email>panpan@itcast.cn</email>
    </contact>
    <contact id="2">
        <name>武松</name>
        <gender id="1000">男</gender>
        <email>wusong@itcast.cn</email>
    </contact>
    <contact id="3">
        <name>武大狼</name>
        <gender>男</gender>
        <email>wuda@itcast.cn</email>
    </contact>
</contactList>

XPath 直接定位属性或标签(解决子标签太深的问题)导入相关类库

在这里插入图片描述
在这里插入图片描述
调用对象就是. 相对路径
在这里插入图片描述
在这里插入图片描述
找属性,找元素。

Base64 64个字符来组成

苍老师
在这里插入图片描述
在这里插入图片描述
编码解码
方便在网络上传输。
苍老师文字根据这个变成数字 编码
类似字符集编码
在这里插入图片描述
在这里插入图片描述

new String(byte[])

工厂模式(车工厂) 批量生产产品 批量生产对象 使用接口 是为了返回各种车的实现类 调用工厂类的方法来生产车,不需要自己new。生产车后可以重写接口的方法,使用车的功能

在这里插入图片描述
在这里插入图片描述
//使用对象和创建对象是分开的,耦合性低
//拿来用就可以,有点像工具类
在这里插入图片描述
在这里插入图片描述
返回值是共同的接口。
在这里插入图片描述
在这里插入图片描述
这是多态的使用,不是让别人帮你创建对象



这篇关于XML_Dom4j_工厂模式_commons-io工具包_Base64的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程