JavaSE Dom4J

113 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第28天,点击查看活动详情

XML 解析就是从 XML 中获取到数据,DOM 是解析思想

DOM(Document Object Model):文档对象模型,把文档的各个组成部分看做成对应的对象,把 XML 文件全部加载到内存,在内存中形成一个树形结构,再获取对应的值

Dom4J 实现:

  • Dom4J 解析器构造方法:SAXReader saxReader = new SAXReader()

  • SAXReader 常用 API:

    • public Document read(File file):Reads a Document from the given File
    • public Document read(InputStream in):Reads a Document from the given stream using SAX
  • Java Class 类 API:

    • public InputStream getResourceAsStream(String path):加载文件成为一个字节输入流返回

子元素

Element 元素的 API:

  • String getName():取元素的名称。
  • List elements():获取当前元素下的全部子元素(一级)
  • List elements(String name):获取当前元素下的指定名称的全部子元素(一级)
  • Element element(String name):获取当前元素下的指定名称的某个子元素,默认取第一个(一级)

属性

Element 元素的 API:

  • List attributes():获取元素的全部属性对象
  • Attribute attribute(String name):根据名称获取某个元素的属性对象
  • String attributeValue(String var):直接获取某个元素的某个属性名称的值

Attribute 对象的 API:

  • String getName():获取属性名称
  • String getValue():获取属性值
 public class Dom4JDemo {
     public static void main(String[] args) throws Exception {
         SAXReader saxReader = new SAXReader();
         Document document = saxReader.read(new File("Demo/src/books.xml"));
         Element root = document.getRootElement();
         // 4.获取book子元素
         Element bookEle = root.element("book");
 ​
         // 5.获取book元素的全部属性对象
         List<Attribute> attributes = bookEle.attributes();
         for (Attribute attribute : attributes) {
             System.out.println(attribute.getName()+"->"+attribute.getValue());
         }
 ​
         // 6.获取Book元素的某个属性对象
         Attribute descAttr = bookEle.attribute("desc");
         System.out.println(descAttr.getName()+"->"+descAttr.getValue());
 ​
         // 7.可以直接获取元素的属性值
         System.out.println(bookEle.attributeValue("id"));
         System.out.println(bookEle.attributeValue("desc"));
     }
 }

文本

Element:

  • String elementText(String name):可以直接获取当前元素的子元素的文本内容
  • String elementTextTrim(String name):去前后空格,直接获取当前元素的子元素的文本内容
  • String getText():直接获取当前元素的文本内容
  • String getTextTrim():去前后空格,直接获取当前元素的文本内容