码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-05-23 14:56:06      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

需求分析:

在做一个利用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文件

标签:

原文地址:http://www.cnblogs.com/hwding/p/5519713.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!