[学习手记] Java中利用DOM方法解析XML文件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[学习手记] Java中利用DOM方法解析XML文件相关的知识,希望对你有一定的参考价值。

需求分析:

在做一个利用API的小东西时需要对返回的XML格式的数据进行解析

详见文章: [开发手记] 一款基于命令行的英英词典 (A CLI-Based EE Dictionary)

项目地址: https://github.com/hwding/seekDict

 

准备工作:

  • 阅读Documentation
  • 查阅相关代码


读入XML文件到程序内:

首先用DocumentBuilderFactory生成一个DocumentBuilder实例

DocumentBuilder docmumentBuilder = DocumentBuilderFactory.newInstance();

这个实例用来从文件中读取, 解析并构造一个(XML)Document

下一步利用docmumentBuilder去解析本地XML文件并把结果赋给一个(XML)Document实例

Document document = docmumentBuilder.parse(file);

注意这个file此处未声明, 实际上应该指向本地的一个存储XML的文件

如果解析成功, 此时document在程序内就是一个合法的(XML)Document


节点(Node\\NodeList)与元素(Element)的查找与读取:

Element rootElement = document.getDocumentElement();

先将整个文档当作一个大元素赋给rootElement

NodeList cotent = rootElement.getChildNodes();

Element类的getChildNodes()方法将获得此元素下的所有一级节点, NodeList中存储着多个Node

所以此时content中就存储了XML文档中所有的一级节点

如果需要继续解析一级节点的子节点, 方法是一样的, 但是将Node类转化成Element类需要进行实例检查, 否则在遍历节点时会出错

1 if (content.item(i) instanceof Element)
2     Element example = (Element) content.item(i);

如果content中第i个子节点是Elememnt的实例, 那么就转换其类型并赋给example, 下面就可以对这个节点作进一步的处理

提取想要的标签节点

Node def = element.getElementsByTagName("def").item(j);

将获得element节点下所有标签为"def"的子节点中的第j个子节点

获得文字节点的内容

childNodes.item(p).getTextContent(); 

 

类方法与属性(重要):

参见 JAVA SE 8 DOCS API

以上是关于[学习手记] Java中利用DOM方法解析XML文件的主要内容,如果未能解决你的问题,请参考以下文章

在java项目中怎样利用Dom4j解析XML文件获取数据

java中利用dom4j解析XML文件

Java中XML文件的读取与写入

Java通过DOM解析假装实现Spring中Bean注入

XML 解析---dom解析和sax解析

Java学习总结(21)——XML文档解析:DOM解析,SAX解析