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

这里写目录标题

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

XML Extensible Markup Language

可扩展性的标记语言
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
编码存储为utf-8
XML_Dom4j_工厂模式_commons-io工具包_Base64

XML_Dom4j_工厂模式_commons-io工具包_Base64
既为开始又为结束
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64

XML_Dom4j_工厂模式_commons-io工具包_Base64
只允许有一个根标签
注释 在里面 ctrl+/
XML_Dom4j_工厂模式_commons-io工具包_Base64
&less than
quotation 双引号
amd 与

XML_Dom4j_工厂模式_commons-io工具包_Base64
character data 字符数字区
XML_Dom4j_工厂模式_commons-io工具包_Base64
下面展示一些 内联代码片

// 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

XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
PCDATA 只能是文本,不能是标签
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
下面展示一些 内联代码片

// 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约束

XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
下面展示一些 内联代码片

// 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>

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

上一级目录回退 用…

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

Dom4j 解析XML

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

XML_Dom4j_工厂模式_commons-io工具包_Base64
下面展示一些 内联代码片

// 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>

XML_Dom4j_工厂模式_commons-io工具包_Base64
下面展示一些 内联代码片

// 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 直接定位属性或标签(解决子标签太深的问题)导入相关类库

XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
调用对象就是. 相对路径
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
找属性,找元素。

Base64 64个字符来组成

苍老师
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
编码解码
方便在网络上传输。
苍老师文字根据这个变成数字 编码
类似字符集编码
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64

new String(byte[])

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

XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
//使用对象和创建对象是分开的,耦合性低
//拿来用就可以,有点像工具类
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
返回值是共同的接口。
XML_Dom4j_工厂模式_commons-io工具包_Base64
XML_Dom4j_工厂模式_commons-io工具包_Base64
这是多态的使用,不是让别人帮你创建对象

上一篇:dom4j简单使用


下一篇:Java基础——XML理解、解析、导入、导出