多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 解析方式和解析器 ![](https://box.kancloud.cn/545bf9c4dc7e229c7fed93d08c610a31_1664x526.jpg) ![](https://box.kancloud.cn/2997ce9702bcd5097d97923ab28aefae_1678x706.jpg) # DOM解析原理及结构模型 xml dom 和 html dom 类似,xml dom将整个xml文档加载到内存,生成一个dom树,并获得Document对象,通过Document对象就可以对Dom进行操作 ![](https://box.kancloud.cn/ad0a4c3d1ba7c5c4be6b90a2ca47994c_1508x946.jpg) dom的核心概念就是节点,在xml文档中的元素,属性,文本,在dom中都是节点 # api使用 导入dom4j的jar包 dom4j必须使用核心类SaxReader加载xml文档获得Document,通过Document对象获得文档的根元素,然后就可以操作了 ![](https://box.kancloud.cn/1287fd0e9660896e81ebee3798e568b0_1220x682.jpg) ~~~ try { //1.创建解析器对象 SAXReader saxReader = new SAXReader(); //2.使用解析器加载web.xml文件得到document对象 Document document = saxReader.read("web.xml"); //3.获取根元素节点 Element rootElement = document.getRootElement(); //4.获取子节点(servlet和servlet-mapping) List<Element> childElements = rootElement.elements(); //5.遍历 for (Element element : childElements) { //6.判断元素的名称为servlet的元素节点 if("servlet".equals(element.getName())){ //7.分别获取servlet元素节点的servlet-name和servlet-class的值 String servletName = element.element("servlet-name").getText(); String servletClass = element.element("servlet-class").getText(); /*System.out.println(servletName); System.out.println(servletClass);*/ data.put(servletName, servletClass); } //9.判断元素的名称为servlet-mapping的元素节点 if("servlet-mapping".equals(element.getName())){ //10.分别获取servlet元素节点的servlet-name和servlet-class的值 String servletName = element.element("servlet-name").getText(); String urlPattern = element.element("url-pattern").getText(); //11.将servletName作为key来获取servletClass的值 String servletClass = data.get(servletName); //12.将url-pattern作为key,servletClass作为value存到map中去 data.put(urlPattern, servletClass); //13.移除servletName data.remove(servletName); } } //System.out.println(data); } catch (DocumentException e) { e.printStackTrace(); } ~~~