DOM解析XML文件例子
DOM解析XML文件是一次性将目标文件中的所有节点都读入,然后再进行后续操作的方式。
一般分为以下几步:
1. 定义好目标XML文件路径path 。
2. 实例化DOM解析工厂对象 ,DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(),这种工厂类都不能用new的方式直接产生对象,必须用调用类的newInstance方法来产生对象。
3. 用上面的工厂对象生成DOM解析器对象 ,DocumentBuilder builder = factory.newDocumentBuilder()。
4. 用解析器对象对目标XML文件进行解析,得到Document文件对象 ,Document doc = builder.parse(path)。
5. 处理Document文件,获得XML文件的所有信息。 得到上面的doc对象也就相当于得到了树的根节点,就可以逐步对这可dom树进行遍历获得所有的节点信息,由于树的定义就是递归定义的,所以这里的遍历采用递归的思想最为简单。
代码如下:
首先是目标XML文件
<?xml version="1.0" encoding="utf-8"?>
<student>
<stu num="1111">
<name>张三丰</name>
<sex>男</sex>
<cla>武当</cla>
</stu>
<stu num="2345">
<name>小龙女</name>
<sex>女</sex>
<cla>古墓</cla>
</stu>
</student>
然后是解析的代码:
public class Domparse {
//用来保存解析出来的学生对象的动态链表
static ArrayList<Student> list = new ArrayList<Student>();
static Student stu;
public static void main(String[] args) throws Exception {
String path = "D:\\xmlEX\\student2.xml";
//实例化一个用来产生DOM解析器的工厂对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//使用工厂得到一个DOM解析器对象
DocumentBuilder builder = factory.newDocumentBuilder();
//解析指定的xml文件或者数据流买得到DOM对象
Document doc = builder.parse(path);
//通过DOM对象获得其中的数据,递归进行遍历
parseXML(doc);
for(Student s:list){
System.out.println(s);
}
}
/**
* 递归解析XML文件
* @param doc
*/
public static void parseXML(Node doc){
//获得doc的所有子节点
NodeList nodes = doc.getChildNodes();
//遍历所有子节点
for(int i=0;i<nodes.getLength();i++){
Node node1 = nodes.item(i);
//获得节点的名字
String str = node1.getNodeName();
//如果这个节点是一个元素节点
if(node1 instanceof Element){
//如果节点名字为stu则创建一个student对象存入队列,并且获得它的num属性
if(str.equals("stu")){
stu = new Student();
list.add(stu);
//获得该元素节点的num属性
String num = ((Element)node1).getAttribute("num");
stu.num = Integer.parseInt(num);
}else if(str.equals("name")){
stu.name = node1.getTextContent();
}else if(str.equals("sex")){
stu.sex = node1.getTextContent();
}else if(str.equals("cla")){
stu.cla = node1.getTextContent();
}
}
parseXML(node1);
}
}
}
DOM解析XML文件例子的更多相关文章
- 使用DOM解析xml文件
使用DOM解析xml文件 要解析的xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <Langu ...
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点
使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...
- Qt中使用DOM解析XML文件或者字符串二(实例)
介绍 在Qt中提供了QtXml模块实现了对XML数据的处理,我们在Qt帮助中输入关键字QtXml Module,可以看到该模块的类表.在这里我们可以看到所有相关的类,它们主要是服务于两种操作XML文档 ...
- DOM解析XML文件实例
XML文件: response: <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www ...
- dom 解析xml文件
JAXP技术 JAXP即Java Api for Xml Processing该API主要是SUN提供的用于解析XML数据的一整套解决方案,主要包含了DOM和SAX解析技术.大家可以参见SUN的以下两 ...
- Python—使用xm.dom解析xml文件
什么是DOM? 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口. 一个 DOM 的解析器在解析一个 XML 文档时,一次性读 ...
- DOM解析XML文件
1.首先把第三方代码拖进工程 GDataXMLNode.h和GDataXMLNode.m这两个文件放进工程里面 2.引入libxml2库文件 3.将GDataXMLNode.h文件中的这两个东西在工程 ...
- Dom解析XML文件具体用法
public class Dom4j { public static void main(String[] args) throws Exception { List<Student> l ...
随机推荐
- springmvc map
/** * 目标方法可以添加 Map 类型(实际上也可以是 Model 类型或 ModelMap 类型)的参数. * @param map * @return */ @RequestMapping(& ...
- leetcode每日一题——两数之和
题目: 两数之和 难度: 简单 描述: 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 解法: class Solutio ...
- asp.net MVC 强类型视图表单Ajax提交的注意事项
xmfdsh这几天遇到这么一个问题,在MVC中通过model模型生成的强类型视图的表单,在提交后的回调函数并没有发挥作用.如下图: 如上图,无论是通过Ajax.BeginForm或者Html.Begi ...
- 20145109 《Java程序设计》第三周学习总结
20145109 <Java程序设计>第三周学习总结 教材学习内容总结 Chapter 4 Object 4.1 Class & Object definition of clas ...
- Ubuntu gcc错误:对'log'等函数未定义的引用
Ubuntu gcc错误:对'log'等函数未定义的引用 a.c #include <stdio.h>#include <math.h>int main(){ float ...
- 非阻塞套接字与IO多路复用
我们了解了socket之后已经知道,普通套接字实现的服务端的缺陷:一次只能服务一个客户端! 并且,为了使一个客户端能够不断收发消息,我们还要使用while循环来轮询,这极大地降低了我们的效率 acce ...
- 广度优先搜索 BFS算法
广度优先搜索算法(Breadth-First-Search,BFS),又称作宽度优先搜索.BFS算法是从根节点开始,沿着树的宽度遍历树的节点.如果所有节点均被访问,则算法中止. 算法思想 1.首先将根 ...
- java判断集合list是为空
if(null == list || list.size() ==0 ){ } list.isEmpty()和list.size()==0 没有区别 isEmpty()判断有没有元素而size()返回 ...
- [BZOJ2815]灾难
题目描述 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发一系列的生态灾难. 学过生物的阿米巴告 ...
- some words
For we meet in an hour of change and challenge, in a dacade of hope and fear, in an a ...