案例一:编写配置文件,编写一个服务器,按照指定的权限名,根据路径,让服务器创建这个对象,调用指定的方法 需求: 1.配置文件xml 2.服务器解析配置文件,创建对象,调用方法
可扩展的标签语言 标签自定义 作用:在替代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(“表达式”) 表达式的写法: / 从根节点选取 // 从匹配的当前文档下选取 根据属性值选取 : //元素名[@属性名=‘属性值’]