你的位置:首页 > Java教程

[Java教程][学习手记] Java中利用DOM方法解析XML数据


需求分析:

在做一个利用API的小东西时需要对返回的

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

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

 

准备工作:

  • 阅读Documentation
  • 查阅相关代码


读入

首先用DocumentBuilderFactory生成一个DocumentBuilder实例

DocumentBuilder docmumentBuilder = DocumentBuilderFactory.newInstance();

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

下一步利用docmumentBuilder去解析本地

Document document = docmumentBuilder.parse(file);

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

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


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

Element rootElement = document.getDocumentElement();

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

NodeList cotent = rootElement.getChildNodes();

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

所以此时content中就存储了

如果需要继续解析一级节点的子节点, 方法是一样的, 但是将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