wanwanwandj 2019-12-04
先要导入包,
导入以后,新建一个xml文档,写入以下内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd"> <web-app version="1.0"> <servlet> <servlet-name>1</servlet-name> <servlet-class>xxx</servlet-class> </servlet> <servlet-mapping> <servlet-name>1</servlet-name> <url-pattern>22</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file></welcome-file> </welcome-file-list> </web-app>
然后写类:
package dom4j; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.Test; public class TestDom4j { @Test public void Testdom4j() { try { //1.获取解析器 SAXReader sr =new SAXReader(); //2.获取document文档对象 Document doc= sr.read("src/dom4j/web.xml"); //3.获取根元素 Element rootElement = doc.getRootElement(); // System.out.println("根元素"+rootElement.getName());//获取根元素的名称 // System.out.println(rootElement.attributeValue("version"));//获取根元素中verion的属性值 //4.获取根元素的下一个子元素 List<Element> children = rootElement.elements(); //5.遍历子元素 for (Element element : children) { if("servlet".equals(element.getName())){//如果元素的名字等于servlet Element servletName = element.element("servlet-name"); Element servletClass = element.element("servlet-class"); System.out.println(servletName.getText());//输出servletName的文本内容 System.out.println(servletClass.getText());//输出servletClass的文本内容 } } } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
使用Junit测试之后:
这样就可以获取,根元素,以及子元素,各种属性值等,更多方法如下:
elements()获取指定名称的所有子元素
element()获取指定名称的首个子元素
elementText()获取指定名称元素的文本值
思考:在写的过程中,要用list来接受,并且遍历根元素的所有子元素,为了加快效率,可以使用泛型,这样在后来的遍历中,直接什么也不用输入,只需要输入循环体里面的内容,减少了很多麻烦