《传智播客dom4j毕向东》由会员分享,可在线阅读,更多相关《传智播客dom4j毕向东(21页珍藏版)》请在金锄头文库上搜索。
1、北京传智播客教育 ,DOM4J,讲师: 毕向东,北京传智播客教育 ,XML文档, 张三 20 北京 李四 23 上海 ,北京传智播客教育 ,XML文档的解析,XML文档的解析方式: DOM DOM解析器使用树形模型,把XML文档转化为一个包含其内容的树,并可以对树进行遍历。 SAX SAX解析器采用了基于事件的模型,解析XML文档的时候可以触发一系列的事件。 JDOM JDOM的目的是成为Java特定文档模型,它简化与XML的交互并且比使用DOM实现更快。 DOM4J DOM4J是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点。,北京传智播客教育 ,XM
2、L文档的节点,DOM(Document Object Model) 文档对象模型 DOM的三层模型将HTML、XML文档定义成树形结构。 文档中的标签,属性,文本等都封装成了节点对象。 封装成对象的好处就是更易于操作这些节点。 DOM本身就是对外暴露的一套API。,北京传智播客教育 ,XML文档的节点,一个XML文档中只有一个根节点 没有父节点的元素节点 元素节点 根节点和根节点中的所有标签都是元素节点 属性节点 id就是属性节点 文本节点 zhangsan zhangsan就是文本节点 注释节点 xml文档中的注释信息,北京传智播客教育 ,DOM4J,DOM在java平台上的应用 dom4j
3、是一套开源的类库。 集成的 XPath(路径查询语言)支持、 XML Schema(约束模式文档)支持。 具体操作: 获取到dom4j的jar包以及帮助文档。 将jar包设置到classpath中,就可以使用dom4j中提供的对象,进行xml文档的解析了。 查看帮助文档了解对象的使用。,北京传智播客教育 ,XML文档基本操作Document,获取xml文档对象Document。 File xmlFile = new File(“test.xml”); SAXReader reader = new SAXReader(); Document xmlDoc = reader.read(xmlFil
4、e);,北京传智播客教育 ,XML文档基本操作Element,获取根元素对象 Element root = xmlDoc.getRootElement(); 获取根元素名称 String elementName = root.getName(); 获取直接子元素对象 通过元素名称获取元素对象 Element element = root.element(“元素名称“); 获取所有直接子元素对象集合 List elementList = root.elements();,北京传智播客教育 ,XML文档基本操作Element,获取元素对象中的文本 获取element元素的内部文本 String t
5、ext = element.getText(); 获取element子元素内部文本 String text = element.elementText(“子元素名称”);,北京传智播客教育 ,练习,将XML文件中的所有文本节点信息打印 如: 张三 20 北京 李四 23 上海,北京传智播客教育 ,XML文档基本操作Attribute,获取元素属性对象 通过属性名获取元素属性对象 Attribute attribute = element.attribute(“属性名称“); 通过索引获取属性对象 Attribute attribute = element.attribute(0); 获取所有属
6、性对象集合 List attributeList = root.attributes(); 获取属性值 通过属性对象 String value = attribute.getValue(); 通过元素对象 String value = element.attributeValue(“属性名称”);,北京传智播客教育 ,DOM4J的体系结构,Document:用于描述XML文档。 Element:用于描述XML文档中的元素。 Attribute:用于描述XML文档中的元素的属性。,北京传智播客教育 ,XML文档基本操作创建,创建文档Document Document document = Doc
7、umentHelper. createDocument(); 创建元素 Element element = document.addElement(“元素名称“); 创建属性 element. addAttribute(“属性名”,“属性值“); 添加属性方法返回的是原元素对象。如同StringBuffer。 创建文本 element.addText(“文本“);,北京传智播客教育 ,XML文档基本操作删除节点,remove(Element element) remove(Attribute attribute) remove(Text text) remove(Node node) Node
8、接口的子类对象都可以移除 注意:remove是移除直接子节点时使用 parentElement.remove(childElement);,北京传智播客教育 ,XML文档基本操作转换字符串,将节点变成字符串 Node接口中的asXML()方法。 将xml规则的字符串转换成xmlDocument String xmlStr = “” +“zhaoliu” +”25”; Document xmlDoc = DocumentHelper.parseText(xmlStr);,北京传智播客教育 ,XML文档基本操作建立xml文件,建立xml文件 FileWriter fw = new FileWrit
9、er(“students2.xml”); XMLWriter writer = new XMLWriter(fw); writer.write(document); writer.close(); 建立漂亮的xml文档,可以指定字符编码 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding(“GBK“); XMLWriter writer = new XMLWriter(fw,format);,北京传智播客教育 ,XPath介绍,XPath 是在 XML 文档中查找信息的语言 XPath 是通过元素
10、和属性进行查找 XPath简化了Dom4j查找节点的过程 使用XPath必须导入jaxen-1.1-beta-6.jar 否则出现 NoClassDefFoundError: org/jaxen/JaxenException,北京传智播客教育 ,XPath语法,北京传智播客教育 ,查询节点,获取所有符合条件的节点 selectNodes(String xpathExpression) 返回List集合 获取符合条件的单个节点 selectSingleNode(String xpathExpression) 返回一个Node对象。 如果符合条件的节点有多个,那么返回第一个。,北京传智播客教育 ,XPath练习,获取年龄大于22的所有学生的姓名 1.定义xpath表达式 2.既然是所有,通过selectNodes方法获取到所有的student元素节点。,北京传智播客教育 ,学生信息管理系统,该程序可以根据用户名的需求,完成基本的添加,删除,查询,修改等操作。 设计组成: 描述学生 描述功能(增删改查) 描述对XML文档的操作 操作控制台,