欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DOM解析XML

程序员文章站 2022-03-03 16:20:48
...
  1. XML解析分为树形解析(DOM)和流解析(SAX)两种形式。其中DOM解析是将整个XML文档全部读取到内存中,形成一棵树,进行管理,而SAX解析则是以数据流的形式,在读取XML文档时,逐次触发事件。
  2. DOM解析器的接口被W3C标准化,并且存放在org.w3c.dom包中
  3. DOM解析的过程:
    1. 获取DocumentBuilderFactory 对象
    2. 获取DocumentBuilder对象
    3. 将待解析属于与DocumentBuilder对象进行绑定,获取Document对象
    4. 调用Document对象的getDocumentElement方法,获取XML的根元素,然后进行解析
        // 获取BuilderFactory,用于进一步获取Builder
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 获取Builder对象,用于进一步获取Document对象
		DocumentBuilder docBuilder = factory.newDocumentBuilder();
		// 将待解析的XML内容放入Builder,获取一个Document对象
		Document doc = docBuilder.parse(new File("src/test.xml"));
		// 获取根元素
		Element element = doc.getDocumentElement();
		// 根据API进行实际的解析过程
		System.out.println(element.getNodeName());
  1. 类以及相关API介绍
    1. DocumentBuilderFactory: 一个工厂类,用于生成DocumentBuilder对象
    一个静态方法:用于获取DocumentBuilderFactory实例
    static DocumentBuilderFactory newInstance()
    一个成员方法:获取DocumentBuilder对象
    public DocumentBuilder newDocumentBuilder()
    2. DocumentBuilder:解析构造器,用于将XML资源解析成DOM树
    主要是parse方法:
    public Document parse(File f): 解析文件
    public Document parse(InputSource is):解析输入流
    public Document parse(String uri):解析URI指定的资源
    3. Document:表示DOM树
    主要用到一个获取根元素的方法:
    Element getDocumentElement()
    4. Element:继承自Node类:
    String getTagName(): 获取标签名称
    String getAttribute(String name): 获取指定的属性值
    5. Node:主要的一个基类:
    NodeList getChildNodes() 获取所有的子元素节点
    Node getLastChild() 获取最后一个子元素
    Node getNexSibling() 获取下一个兄弟元素
    Node getPreviousSibling() 获取前一个兄弟元素
    Node getParentNode() 获取父元素
    NamedNodeMap getAttributes() 获取所有的属性集合
    String getNodeName() 获取节点的名称
    6. NodeList: 是一个Node的集合
    int getLength(): 获取集合长度
    Node item(int index): 获取集合元素
    7. NamedNodeMap:与NodeList基本相同
    8. Text: 纯文本节点,是Node的一个子类
    public String getData(): 获取节点内容
相关标签: XML DOM 解析