[学习手记] 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

时间: 2024-07-29 15:03:36

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

java中的dom,XmlPullParser 解析xml,

新建xml文件: <?xml version="1.0" encoding="UTF-8"?> <contacts> <contact id="1"> <name>zhangsan</name> <image src="http://192.168.1.103:8080/mymyweb/images/1.gif"/> </contact> &l

【java项目实战】dom4j解析xml文件,连接Oracle数据库

简介 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方,我们还是看一下官方给出的解释.如下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT等语言的库.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP等编程标准. 特点 dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例

DOM方式解析xml文件查看天气

1.步骤: ①创建文档解析器的工厂对象 ②得到文档解析器对象 ③获取输入流对象 ④通过解析器的parse方法解析is对象 转换成Document对象 ⑤返回的是文档的根节点 ⑥判断是否有孩子节点进行获取子节点转换成元素节点得到属性节点 ⑦得到具体的某个属性节点 2.解析元素节点.属性节点.文本节点: 3.界面搭建 界面搭建的相关代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

通过Dom方式解析xml文件

此项目通过简单的天气情况显示来实现xml文件的解析 1. 搭建环境 1)创建如下图的包.类及文件 2)布局文件的大概样式如下图所示,用到四个TextView控件和一个RadioGroup控件 3)china.xml文件的内容如下 <?xml version="1.0" encoding="UTF-8"?> <china dn="day"> <city cityname="南京" pyName=&q

android如何使用DOM来解析XML文件

对于以下的xml文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <books> <book email="zhoujunhui&quo

在iOS 开发中用GDataXML(DOM方式)解析xml文件

因为GDataXML的内部实现是通过DOM方式解析的,而在iOS 开发中用DOM方式解析xml文件,这个时候我们需要开启DOM,因为ios 开发中是不会自动开启的,只有在mac 开发中才自动开启的.我们需要做如下配置: 当配置玩这个操作之后,再次进行编译的时候,系统还是报错,是因为我们还需要进行如下操作:

java入门学习:Java中的main()方法详解

本文来源:http://www.zretc.com/technologyDetail/445.html 在Java入门学习中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等. 在看Java中的main()方法之前,先看一个最简单的Java应用程序HelloWorld,我将通过这

Android中使用PULL方式解析XML文件

Pull解析器的运行方式与 SAX 解析器相似.它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件.跟SAX不同的是, Pull解析器产生的事件是一个数字,而非方法,因此可以使用一个switch对感兴趣的事件进行处理.当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型节点的值. 下面我们通过Demo例子来介绍如何使用PULL机制来解析XML文件.先看下如下工程的目录结构: 按以下步骤进行操作: [1]

java中使用Properties加载XML文件设置java窗体应用程序的窗体属性

一.描述 开发一个MyFrame窗体应用程序,该窗体继承JFrame类,窗体中的标题.按钮上的文字等信息都可以写在一个xml配置文件中,即使以后想更改所有的属性,只需要更改xml配置文件中的相应属性即可. 本案例使用java中的Properties类来加载一个xml配置文件,并读取文件中的所有属性(key-value),并将取得的所有键值对应用于JFrame窗体属性中. 二.源代码 package tong.day4_27.systemUse; import java.awt.FlowLayou