xml简介

1) XML--可扩展标记语言eXtensible Markup Language
2) 由W3C组织发布,目前推荐遵守的是W3C组织于2000年发布的XML1.0规范
3) XML的使命,就是以一个统一的格式,组织有关系的数据,为不同平台下的应用程序服务
4) XML用来传输和存储数据,HTML用来显示数据
5) XML没有预定义标签,均为自定义标签

xml用途
1) 配置文件
  JavaWeb中的web.xml
  C3P0中的c3p0-config.xml
2) 数据交换格式
  Ajax
  WebService
3) 数据存储
  保存关系型数据
4)

xml基本语法
1) XML文档组成
  ① XML声明
      version属性指定XML版本,固定值是1.0
      encoding指定的字符集,是告诉解析器使用什么字符集进行解码,而编码是由文本  编辑器决定的
  ② CDATA区
      当XML文档中需要写一些程序代码、SQL语句或其他不希望XML解析器进行解析  的内容时,就可以写在CDATA区中
      XML解析器会将CDATA区中的内容原封不动的输出
      CDATA区的定义格式:<![CDATA[…]]>
2) 语法规则
  ① XML声明要么不写,要写就写在第一行,并且前面没有任何其他字符
  ② 只能有一个根标签
  ③ 标签必须正确结束
  ④ 标签不能交叉嵌  
  ⑤ 严格区分大小写
  ⑥ 属性必须有值,且必须加引号
  ⑦ 标签不能以数字开头
  ⑧ 注释不能嵌套

xml解析
  1) XML解析是指通过解析器读取XML文档,解释语法,并将文档转化成对象
  2) 常用的解析方式
    DOM(Document Object Model)
    SAX(Simple API for XML)
  3) DOM 和SAX解析的对比


//1.创建解析器对象
SAXReader saxReader = new SAXReader();
//2.解析xml文件获取document对象
Document document = saxReader.read("students.xml");
//3.得到根元素
Element root = document.getRootElement();
<?xml version="1.0" encoding="UTF-8"?>
<students>  <!-- 根标记 -->
    
    <student>
        <id>1001</id>
        <name>Tom</name>
        <gender>男</gender>
    </student>
    <student>
        <id>1002</id>
        <name>Jerry</name>
        <gender>女</gender>
    </student>
    
    <class>
        <class-name>com.atguigu.login.beans.Employee</class-name>    
    </class>

</students>
package com.atguigu.login.test;

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

import com.atguigu.login.beans.Employee;

public class TestXml {

    @Test
    public void test() throws Exception {
        // dom 解析
        //创建解析器对象
        SAXReader reader = new SAXReader();
        
        //把一个xml文件解析成 dom数
        Document dom = reader.read("students.xml");
        System.out.println("dom:" + dom );
        
        //获取根节点
        Element root = dom.getRootElement();
        
//        List<Element> els  = root.elements();
//        for (Element element : els) {
//            System.out.println(element.elementText("name") );
//        }
        
        Element cls = root.element("class");
        Element clsName = cls.element("class-name");
        System.out.println("clsName:" + clsName);
        
        String  clsStr = clsName.getText();
        System.out.println("clsStr:" + clsStr);
        
        Employee emp = (Employee)Class.forName(clsStr).newInstance();
        System.out.println(emp);
    }

}

 

posted @ 2020-05-13 21:09  kkzhang  阅读(464)  评论(0编辑  收藏  举报