XML基本介绍和解析

案例一:编写配置文件,编写一个服务器,按照指定的权限名,根据路径,让服务器创建这个对象,调用指定的方法
需求:
1.配置文件xml
2.服务器解析配置文件,创建对象,调用方法

xml :

可扩展的标签语言
标签自定义
作用:在替代html 失败后,用来存储数据(存在的价值就是配置文件)
书写规范:
1.要区分大小写
2.应该有一个根标签(所有的内容都要在根标签中)
3.标签必须要有关闭<></> </ *>
4.属性必须用引号
5.标签体中的空格或者是换行符或者是制表符都是作为数据存在的
在html 中:<>aaa<> 和 <> aaa<> 是没有区别的
但是在xml 中 标签之间的所有内容都是作为数据存在的
6.特殊的字符必须转义
<> & 等
这样规范的xml 文件,是可以通过浏览器浏览的
文件的后缀名: .xml
xml 的组成部分:
1.声明(在我们用工具写的时候会自动为我们加上)
格式:< ?xml…?>
例如:

<?xml version = "1.0" encoding ="UTF-8" ?> <?xml version = "1.0" encoding ="UTF-8" standalone = "yes|no" ?>

要求:声明必须写在xml 第一行,必须要顶格
2.元素(标签):
格式:<>< /> </ >
要求:
1.必须要关闭
2.便签名不能一任何书写的xml 开头
3.标签名中不能出现空格 或者: 等特殊字符
3.属性:
格式:<xx 属性名 = ”属性值“/>
要求:
属性必须要用引号引起来
注释:和html 的注释一致
Cdata:
xml 文件的特殊符号必须转义。通过Cdata 保证数据输出的远洋型原样性
格式:

<![CDATA[原样输出的内容]]>

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

xml 的解析:
常见的解析技术:
1.sax 解析
逐行解析,只能向下查询
2.dom 解析
一次性将文档加载到内存中,形成一颗dom 树,可以对dom 树curd 操作
常见的解析技术:dom4J
使用步骤:
1.导入jar包
2.创建一个核心类 SAXReader : new SAXReader()
3.将xml 文件加载到内存中形成一棵树
Document doc = reader.read(文件)
4.获取根节点 Element root = doc.getRootElement();
5.通过根节点获取其他节点(文本节点 属性节点 元素节点 )

		获取所有的子元素:List<Element> list = root
		获取元素的指定属性的内容: String value = root.attributeValue("属性名")
		获取子标签标签体:遍历list 获取每一个元素
		获取子元素的子标签体内容  : String text = ele.elementText("子标签体名称")

xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5">
    <servlet>
        <servlet-name>HelloMyServlet</servlet-name>
        <servlet-class>com.itheima.HelloMyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloMyServlet</servlet-name>
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

在这里插入图片描述

package web_xml_tomcat.dom4j;

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

import java.util.List;

public class dom4j_Demo {
    public static void main(String[] args) throws DocumentException {
        //创建SAXReader对象
        SAXReader reader  = new SAXReader();
        //获取dom 树
        Document doc = reader.read("src\\web_xml_tomcat\\web_.xml");

        //获取根节点
        Element root = doc.getRootElement();

        //获取其他节点
        List<Element> list = root.elements();

        /*for(Element e:list){
            System.out.println(e);
        }*/

        //获取根节点的属性值
        String attribute = root.attributeValue("version");
       // System.out.println(attribute);

        //获取文本内容
        for(Element e:list){
            Element ele = e.element("servlet-name");
            System.out.println(ele);
            String text = e.elementText("servlet-name");
            System.out.println(text);
        }
    }
}

xpath 解析技术:(扩展)
依赖于dom4j
使用步骤:
1.导入dom4j 的jar 包 再导入 jaxen-1.1-beta jar包
2.将xml 文件导入内存
3.使用api: selectNode(“表达式”) selectSingleNode(“表达式”)
表达式的写法:
/ 从根节点选取
// 从匹配的当前文档下选取
根据属性值选取 : //元素名[@属性名=‘属性值’]

猜你喜欢

转载自blog.csdn.net/Stitch__/article/details/83385861