package com.swift.kaoshi;

import java.io.File;
import java.util.List;
import java.util.Scanner; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test; /*
<servlets>
<servlet>
<servlet-name>servlet1</servlet-name>
<servlet-class>cn.itheima.servlets.MyServlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet1</servlet-name>
<url-pattern>/s1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>servlet2</servlet-name>
<servlet-class>cn.itheima.servlets.MyServlet2</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>servlet2</servlet-name>
<url-pattern>/s2</url-pattern>
</servlet-mapping>
</servlets> 二、编写程序,请按以下要求解析XML文件:
1. 接收用户输入一个字符串,例如:”/s1”,要求程序可以通过检索<servlet-mapping>元素下的<url-pattern>元素进匹配,匹配后获取同级的<servlet-name>元素的值;
通过这个值再检索<servlet>元素下的<servlet-name>元素的值进行匹配,匹配成功后,获取同级下的<url-pattern>的值,并打印<url-pattern>的值。<servlet-class>
例如:用户输入:/s1,控制台打印:cn.itheima.servlets.MyServlet1
用户输入:/s2,控制台打印:cn.itheima.servlets.MyServlet2*/ //dom4j SAX遍历 public class Demo_Dom4j { public static void main(String[] args) throws Exception { // SAXReader reader = new SAXReader();
// Document document = reader.read(new File("web.xml"));
// String servlet_name = null;
//
// System.out.println("请输入一个路径字符串:");
// Scanner scan = new Scanner(System.in);
// String str = scan.nextLine();
//
// Element root = document.getRootElement();
// List<Element> mappings = root.elements("servlet-mapping");
// for (Element element : mappings) {
// System.out.println(element);
// List<Element> urls = element.elements("url-pattern");
// for (Element url : urls) {
// System.out.println(url);
// String text=url.getText();
// System.out.println(text);
// if(text.equals(str)) {
// Element name=element.element("servlet-name");
// servlet_name=name.getText();
// System.out.println(servlet_name);
// }
// }
// }
// System.out.println("===========================================================================");
// //准备检索servlet
// List<Element> servlets=root.elements("servlet");
// for(Element servlet:servlets) {
// System.out.println(servlet);
// List<Element> servlet_names=servlet.elements("servlet-name");
// for(Element servlet_n:servlet_names) {
// String servlet_name1=servlet_n.getText();
// System.out.println(servlet_name1);
// if(servlet_name1.equals(servlet_name)) {
// Element servlet_class=servlet.element("servlet-class");
// System.out.println("需要查找的类的名称是: "+servlet_class.getText());
// }
// }
// } } @Test
public void show() throws Exception { SAXReader reader = new SAXReader();
Document document = reader.read(new File("web.xml"));
String servlet_name = null; System.out.println("请输入一个路径字符串:");
Scanner scan = new Scanner(System.in);
String str = scan.nextLine(); Element root = document.getRootElement();
List<Element> mappings = root.elements("servlet-mapping");
for (Element element : mappings) {
System.out.println(element);
List<Element> urls = element.elements("url-pattern");
for (Element url : urls) {
System.out.println(url);
String text=url.getText();
System.out.println(text);
if(text.equals(str)) {
Element name=element.element("servlet-name");
servlet_name=name.getText();
System.out.println(servlet_name);
}
}
}
System.out.println("===========================================================================");
//准备检索servlet
List<Element> servlets=root.elements("servlet");
for(Element servlet:servlets) {
System.out.println(servlet);
List<Element> servlet_names=servlet.elements("servlet-name");
for(Element servlet_n:servlet_names) {
String servlet_name1=servlet_n.getText();
System.out.println(servlet_name1);
if(servlet_name1.equals(servlet_name)) {
Element servlet_class=servlet.element("servlet-class");
System.out.println("需要查找的类的名称是: "+servlet_class.getText());
}
}
} }
}

属性值的解析

package com.swift.kaoshi;

import java.io.File;
import java.util.List; import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; /*有product.xml,请使用dom4j解析出所有的商品信息,并打印商品的所有属性值:
product.xml的内容如下:
<?xml version = “1.0” encoding=”UTF-8”?>
<products>
<product id = “p001”>
<name>华为X80</name>
<color>白</color>
<price>2800</price>
</product>
<product id = “p002”>
<name>华为X88</name>
<color>黑</color>
<price>2900</price>
</product>
</products> 操作步骤描述
1.在项目目录下,按照已给出的XML内容创建product.xml文件
2.使用核心类SaxReader加载xml文档获得Document
3.通过Document对象获得文档的根元素
4.获得所有product元素
5.获得元素属性的属性值及元素下的子元素的所有文本内容*/ public class Dom4j_Attribute { public static void main(String[] args) throws Exception { SAXReader sax = new SAXReader();
Document document = sax.read(new File("product.xml"));
Element root = document.getRootElement();
List<Element> products = root.elements("product");
for (Element product : products) {
Attribute attri = product.attribute("id");
System.out.println("product "+attri.getName()+"的属性值是 "+attri.getData());
List<Element> dazahui=product.elements();
for(Element za:dazahui) {
String name=za.getName();
String text=za.getText();
System.out.println(name+" 元素的值为 "+text);
}
} } }

java基础 xml 使用dom4j解析 xml文件 servlet根据pattern 找到class的更多相关文章

  1. 【java项目实战】dom4j解析xml文件,连接Oracle数据库

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  2. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  3. XML(四)dom4j解析XML

    使用dom4j须要导入jar包 jar包下载地址:http://pan.baidu.com/s/1o65jWRw 将dom4j-1.6.1.jar包导入Eclipse book2.xml <?x ...

  4. java使用dom4j解析xml文件

    关于xml的知识,及作用什么的就不说了,直接解释如何使用dom4j解析.假如有如下xml: dom4j解析xml其实很简单,只要你有点java基础,知道xml文件.结合下面的xml文件和java代码, ...

  5. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  6. Java进阶(二十七)使用Dom4j解析XML文件

    使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...

  7. 在java项目中怎样利用Dom4j解析XML文件获取数据

    在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进 ...

  8. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  9. 用DOM4J解析XML文件案例

    用DOM4J解析XML文件案例,由于DOM4J不像JAXP属于JAVASE里,所以如果要使用DOM4J,则必须额外引入jar包,如图:

随机推荐

  1. PlayMaker Destroy Self 和 Destroy Object 和 Set Visibility

    1. 这个销毁是销毁状态机所在的游戏物体,不能销毁父物体. 2. 这个销毁只要把想销毁的游戏物体拖进去就可以. 3. 这个其实不是真正的销毁游戏对象,只是把它的 MeshRenderer 组件关上了, ...

  2. Unity3D跨平台动态库编译---记kcp基于CMake的各平台构建实践

    一 为什么需要动态库 1)提供原生代码(native code)的支持,也叫原生插件,但是我实践的是c/cpp跨平台动态库,这里不具体涉及安卓平台java库和ios平台的objectc库构建. 2)某 ...

  3. DEDE列表页和内容页调用顶级栏目ID的方法

    dede模板中添加顶级栏目id的方法总结,使用dede顶级栏目id可以实现很多功能.比如,在每个列表页调用不同的栏目图片(同一顶级栏目调用相同的图片),如果我们做N个栏目就意味着要做N个列表页模板,显 ...

  4. 深入学习hbase:表,列族,列标识,版本和cell

    HBase是面向列的分布式的数据库,和传统的关系型数据库有很大的不同:物理模型和逻辑模型.这里我们要首先讲一下HBase数据库相关的区别于关系型数据库的几个基本概念:          表:HBase ...

  5. 【input】——数据传入后台

    1.复选框 checkbox <label class="checkbox"> <input type="checkbox" name=&qu ...

  6. IIS报错试图加载格式不正确的程序集解决办法 64位WinServer系统兼容32位程序集

    问题描述:     将网站/WCF发布到IIS后运行报这个错. 原因:     64位系统和32系统不匹配导致. 解决办法:     方法一.注册32位IIS(必须卸载64位IIS)         ...

  7. JDK基本知识

    JDK发展史: JDK1.0:提供了一个纯解释的Java虚拟机实现 JDK1.3:把Java技术体系拆分为3个方向,J2SE,J2EE,J2ME,并且Java虚拟机第一次内置了JIT JDK1.4:增 ...

  8. 软件测试技术第三次作业——打印质数printPrimes()

    作业一.Use the following method printPrimes() for questions a–d. printPrimes: /** ********************* ...

  9. 切片操作:MATLAB VS Python

    切片操作:MATLAB VS Python 一.MATLAB 矩阵的拆分 1.冒号表达式: t = e1:e2:e3 e1表示初始值,e2为步长,e3为终止值(包括e3),产生一个从e1到e3,步长为 ...

  10. SpringMVC ------JstlView

    摘要: Spring为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一 .Spring3.0后全面超越Struts,成为最优秀的MVC框架 .SpringMVC通过一套M ...