使用 DOM 时,数据以类树结构被装入内存中。
DOM 使用根节点和父子关系。
DOM的三层模型将HTML、XML文档定义成树形结构。
文档中的标签,属性,文本等都封装成了节点对象。
封装成对象的好处就是更易于操作这些节点。
DOM本身就是对外暴露的一套API。
--------------------------------------------------------------
XML文档的节点
一个XML文档中只有一个根节点-没有父节点的元素节点
元素节点-根节点和根节点中的所有标签都是元素节点
属性节点-<student id=“001”></student> id就是属性节点
文本节点-<name>zhangsan</name> zhangsan就是文本节点
注释节点-<!-- --> xml文档中的注释信息
---------------------------------------------------------------------
DOM4J
DOM在java平台上的应用
dom4j是一套开源的类库。
集成的 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(xmlFile);
XML文档基本操作——Element
获取根元素对象
Element root = xmlDoc.getRootElement();获取根元素名称
String elementName = root.getName();
获取直接子元素对象
通过元素名称获取元素对象Element element = root.element(“元素名称");
获取所有直接子元素对象集合
List elementList = root.elements();
获取元素对象中的文本
获取element元素的内部文本String text = element.getText();
获取element子元素内部文本
String text = element.elementText(“子元素名称”);
XML文档基本操作——Attribute
获取元素属性对象
通过属性名获取元素属性对象
Attribute attribute = element.attribute(“属性名称");
通过索引获取属性对象
Attribute attribute = element.attribute(0);
获取所有属性对象集合
List attributeList = root.attributes();
获取属性值
通过属性对象
String value = attribute.getValue();
通过元素对象
String value = element.attributeValue(“属性名称”);
XML文档基本操作——创建
创建文档Document
Document document = DocumentHelper. createDocument();
创建元素
Element element = document.addElement(“元素名称");创建属性
element. addAttribute(“属性名”,“属性值");
添加属性方法返回的是原元素对象。如同StringBuffer。
创建文本
element.addText(“文本");
XML文档基本操作——删除节点
remove(Element element)
remove(Attribute attribute)
remove(Text text)……
remove(Node node)
Node接口的子类对象都可以移除
注意:remove是移除直接子节点时使用
parentElement.remove(childElement);
XML文档基本操作——建立xml文件
建立xml文件
FileWriter fw = new FileWriter(“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);