XMl标签枚举

XMl概述

xml是可扩展的标记语言。它的标签都是自定义的,然后通过程序员写代码自己进行解析。

html的标签是预定义好的,每一个标签都有特定含义,这些标签可以被浏览器直接识别。

xml一般用来作为配置文件使用,它可以表示具有层次结构的数据。

XML标签的规则

1.标签都有由一对尖括号组成的
2.标签一般都是成对出现的,开始标签和结束标签的名称是一样的
	<student></student>
3.标签可以是单独的一个标签,必须要有结束标签
	<student/>
4.标签可以写属性,由属性名和属性值组成
	<student name="zhagnsan" ></student>
5.标签可以嵌套,不能交叉
	<student>
		<name>zhagnsan</name>
		<age>20</age>
    </student>

XML文件的格式

1.xml是由自定义的标签组成
    <开始标签>标签体</结束标签>
    <自闭合标签/>
2.xml文件的语法
    1)必须要有一个文档声明
    	<?xml version="1.0" encoding="UTF-8" ?>
    2)只有一个根标签
    3)特殊字符 如< > & 必须使用特殊的比较进行代替
    	&lt;	<	小于
        &gt;	>	大于
        &amp;	&	和号
        &apos;	'	单引号
        &quot;	"	引号
     
     4)CDATA区,数据可以被原样显示,不被当做标签解析
        <![CADATA[内容]]>

举例

<?xml version="1.0" encoding="UTF-8" ?>
<students>
    <student id="001">
        <name>张三</name>
        <age>20</age>
    </student>
</students>

DOM解析

使用Java代码来识别xml中的数据,这个过程叫做xml解析。

Document对象: 表示整个xml文件
ELEMENT对象: 表示某一个标签
Arribute对象:表示属性对象
Text对象: 表中体 

导入dom4j.jar包

1.在模块下新建一个lib文件夹
2.复制dom4j-1.6.1.jar到lib目录下
3.选中jar文件右键,点击Add As Library

查看dom4j提供的文档,解析xml文件

SAXReader reader = new SAXReader();
//获取整个dom数
Document document = reader.read("day17/a.xml");
//获取根标签
Element rootElement = document.getRootElement();
//获取根标签下面的子标签,子标签有多个
List<Element> list = rootElement.elements("student");
//创建用于存储Student对象的集合,解析后的数据封装为Student对象
List<Student> stuList=new ArrayList<>();

//遍历集合
for (Element element : list) {
    //获取id属性的值
    String id = element.attribute("id").getValue();
    //获取name标签的标签体
    String name = element.element("name").getText();
    //获取age标签的标签体
    String age = element.element("age").getText();
    //把id,name,age封装为对象
    Student stu=new Student(id,name,Integer.parseInt(age));
    stuList.add(stu);
}

//遍历集合
for (Student student : stuList) {
    System.out.println(student);
}

DTD约束

定义DTD约束文件

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

引入DTD约束到xml

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
</note> 

schema约束

定义约束文件

<?xml version="1.0"?>
 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">
	<!--定义persons复杂元素-->
    <element name="persons">
        <complexType>
            <sequence>
                <!--定义person复杂元素-->
                <element name = "person">
                    <complexType>
                        <sequence>
                            <!--定义name和age简单元素-->
                            <element name = "name" type = "string"></element>
                            <element name = "age" type = "string"></element>
                        </sequence>

                        <attribute name="id" type="string" use="required"></attribute>
                    </complexType> 
                </element>
            </sequence>
        </complexType>
</xs:schema>

引入约束文件

<?xml version="1.0"?>
<note xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn person.xsd">
    <person id="001">
        <name>张三</name>
        <age>23</age>
    </person>
</note>

枚举

枚举是一种特殊的类,枚举类的对象是固定的几种,所以一枚举项的形式罗列出来,每一个枚举项其实就是一个对象

public enum Week {
    //写7个Week的对象
//    public static final Week SUNDAY=new Week("星期日");
//    public static final Week MONDAY=new Week("星期一");
//    public static final Week TUESDAY=new Week("星期二");
//    public static final Week WEDNESDAY=new Week("星期三");
//    public static final Week THURSDAY=new Week("星期日");
//    public static final Week FRIDAY=new Week("星期五");
//    public static final Week SATURDAY=new Week("星期六");
	
    //把前面7个Week对象改成枚举项,每一个枚举项就表示一个Week的对象
    SUNDAY("星期日"),  //0
    MONDAY("星期一"),  //1
    TUESDAY("星期二"),	//2
    WEDNESDAY("星期三"), //3
    THURSDAY("星期日"), //4
    FRIDAY("星期五"), //5
    SATURDAY("星期六"); 
	
    //成员变量
    private String name;
	//构造方法
    private Week() {
    }
    private Week(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return "Week{" +
                "name='" + name + '\'' +
                '}';
    }
}

枚举类的常用方法

public String name()  
    获取枚举项的名称
public int ordinal() 
    获取枚举项的索引
public int compareTo(E o) 
    比较枚举项的顺序(就是拿着枚举项的索引进行相减)
    int num= Week.MONDAY.compareTo(Week.FRIDAY)  
public String toString()  
    如果复写该方法,打印枚举项的时候得到的就是复写的内容

举例

1.定义一个Week枚举类,写上7个星期表示枚举项
2.写一个测试类,在测试类中写一个switch语句,根据枚举项做出选择执行不同的代码

public enum Week {
    SUNDAY("周日"),
    MONDAY("周一"),
    TUESDAY("周二"),
    WEDNESDAY("周三"),
    THURSDAY("周四"),
    FRIDAY("周五"),
    SATURDAY("周六");

    private String value;

    Week(String value) {
        this.value = value;
    }



}

public class Demo2 {
    public static void main(String[] args) {
        Week monday = Week.MONDAY;

        switch (monday){
            case FRIDAY -> System.out.println("今天周四");
            case MONDAY -> System.out.println("今天周一");
            case SUNDAY -> System.out.println("今天周日");

        }
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值