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;/*二、编写程序,请按以下要求解析XML文件:1. 接收用户输入一个字符串,例如:”/s1”,要求程序可以通过检索 servlet1 cn.itheima.servlets.MyServlet1 servlet1 /s1 servlet2 cn.itheima.servlets.MyServlet2 servlet2 /s2 元素下的 元素进匹配,匹配后获取同级的 元素的值;通过这个值再检索 元素下的 元素的值进行匹配,匹配成功后,获取同级下的 的值,并打印 的值。 例如:用户输入:/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 mappings = root.elements("servlet-mapping");// for (Element element : mappings) {// System.out.println(element);// List 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 servlets=root.elements("servlet");// for(Element servlet:servlets) {// System.out.println(servlet);// List 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 mappings = root.elements("servlet-mapping"); for (Element element : mappings) { System.out.println(element); List 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 servlets=root.elements("servlet"); for(Element servlet:servlets) { System.out.println(servlet); List 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的内容如下:操作步骤描述1.在项目目录下,按照已给出的XML内容创建product.xml文件2.使用核心类SaxReader加载xml文档获得Document3.通过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 华为X80 白 2800 华为X88 黑 2900 products = root.elements("product"); for (Element product : products) { Attribute attri = product.attribute("id"); System.out.println("product "+attri.getName()+"的属性值是 "+attri.getData()); List dazahui=product.elements(); for(Element za:dazahui) { String name=za.getName(); String text=za.getText(); System.out.println(name+" 元素的值为 "+text); } } }}