XML基础

XML概述

xml是一种可扩展标记语言

标记语言:通过标签来描述数据的一门语言(标签有时我们也将其称为元素)

可扩展:标签的名字是可以自定义的

可以理解为:XML文件是由很多标签组成的,而标签名是可以自定义的

作用:

1.用于进行存储数据和传输数据

2.作为软件的配置文件

XML标签规则

 XML语法规则

 

在 XML 中,有 5 个预定义的实体引用

&lt;<小于
&gt;>大于
&amp;&和号
&apos;'单引号
&quot;"引号
<?xml version="1.0" encoding="UTF-8" ?>
<!--注释的内容 快捷键选中内容 ctrl+shift+/ 或ctr+/-->

<students>
    <student id="1">
        <name>张三</name>
        <age>23</age>
        <info>学生&lt;&gt;的信息</info>
        <message><![CDATA[内容<<<<<<]]]></message>
    </student>

    <student id="2">
        <name>李四</name>
        <age>24</age>
    </student>

</students>

解析XML

常见的解析思想

 

常见的解析工具(DOM4J)

dom4j下载地址
https://dom4j.github.io/

DOM4J练习

需求:

解析这个xml文件

将解析到的数据封装到学生对象中

并将学生对象存储到ArrayList集合中

遍历集合

package com.itheima.study;

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

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class XmlParse {
    public static void main(String[] args) throws DocumentException {
        //1.获取一个解析器对象
        SAXReader saxReader=new SAXReader();
        //2.利用解析器把xml文件加载到内存中,并返回一个文档对象
        Document document = saxReader.read(new File("untitled\\xml\\student.xml"));
        //3.获取到根标签
        Element rootElement = document.getRootElement();
        //4.通过根标签来获取student标签
        //elements();可以获取调用者所有的子标签,会把这些子标签放到一个集合中返回
        //elements("标签名"):可以获得调用者所有的指定的子标签,会把这些子标签放到一个集合中返回
        List list = rootElement.elements();
        List<Element>studentElements = rootElement.elements("student");
        //System.out.println(list.size());
        //用来装学生的
        ArrayList<Student> list1=new ArrayList<>();
        //5.遍历集合,得到每一个student标签
        for (Element element : studentElements) {
            //element依次表示每一个student标签
            //获取id这个属性
            Attribute attribute = element.attribute("id");
            //获取id的属性值
            String id=attribute.getValue();
            //获取name标签
            //element("标签名"):获取调用者指定的子标签
            Element nameElement = element.element("name");
            //获取这个标签的标签体内容
            String name=nameElement.getText();
            System.out.println(id);
            System.out.println(name);
            Student s=new Student(id,name,parseInt(age));
            list1.add(s);
     }
        //遍历操作
        for(Student student:list1){
            System.out.println(student);
        }

    }
}
什么是约束

用来限定xml文件中可使用的标签以及属性

告诉程序员,xml怎么写

约束的分类

DTD

schema

<!ELEMENT persons (person)>
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
引入DTD约束的方式之(在本地引入)

 

引入DTD约束的方式之(在xml文件内部引用)

引入DTD约束的方式之(引入网络中DTD)

 

 

 

 schema和dtd的区别

1.schema约束文件也是一个xml文件,符合xml的语法,这个文件的后缀名.xsd

2.一个xml中可以引用多个schema约束文件,多个schema使用名称空间区分(名称空间类似于Java包名)

3.dtd里面元素类型的取值比较单一常见的是PCDATA类型,但是schema里面可以支持多个数据类型

4.schema语法更加的复杂

 

 

<?xml version="1.0" encoding="UTF-8" ?>
<schema
        xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="http://www.itheima.cn/javase"
        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>
                </complexType>

              </element>
          </sequence>
      </complexType>

    </element>>
</schema>
 引入schema约束文件步骤

 

 Schema定义属性

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值