析
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 Filepublic 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():去前后空格,直接获取当前元素的文本内容