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文件例子的更多相关文章

  1. 使用DOM解析xml文件

    使用DOM解析xml文件 要解析的xml文件如下: <?xml version="1.0" encoding="UTF-8"?> <Langu ...

  2. JAVA中使用DOM解析XML文件

    XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...

  3. 使用DOM解析XML文件,、读取xml文件、保存xml、增加节点、修改节点属性、删除节点

    使用的xml文件 <?xml version="1.0" encoding="GB2312" ?> <PhoneInfo> <Br ...

  4. Qt中使用DOM解析XML文件或者字符串二(实例)

    介绍 在Qt中提供了QtXml模块实现了对XML数据的处理,我们在Qt帮助中输入关键字QtXml Module,可以看到该模块的类表.在这里我们可以看到所有相关的类,它们主要是服务于两种操作XML文档 ...

  5. DOM解析XML文件实例

    XML文件: response: <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www ...

  6. dom 解析xml文件

    JAXP技术 JAXP即Java Api for Xml Processing该API主要是SUN提供的用于解析XML数据的一整套解决方案,主要包含了DOM和SAX解析技术.大家可以参见SUN的以下两 ...

  7. Python—使用xm.dom解析xml文件

    什么是DOM? 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口. 一个 DOM 的解析器在解析一个 XML 文档时,一次性读 ...

  8. DOM解析XML文件

    1.首先把第三方代码拖进工程 GDataXMLNode.h和GDataXMLNode.m这两个文件放进工程里面 2.引入libxml2库文件 3.将GDataXMLNode.h文件中的这两个东西在工程 ...

  9. Dom解析XML文件具体用法

    public class Dom4j { public static void main(String[] args) throws Exception { List<Student> l ...

随机推荐

  1. 使用npm构建前端项目基本流程

    现在各种前端框架, 库文件基本都托管到npm上, 我们平常下载到别人的项目文件, 也基本是用npm 构建的, 不了解点node和npm那是寸步难行. 下面介绍的代码示例不敢说是最佳实践, 但都是我亲自 ...

  2. Python Tornado框架三(源码结构)

    Tornado 是由 Facebook 开源的一个服务器“套装”,适合于做 python 的 web 或者使用其本身提供的可扩展的功能,完成了不完整的 wsgi 协议,可用于做快速的 web 开发,封 ...

  3. Bootstrap总结一

    参考我的博客:http://www.isedwardtang.com/2017/08/30/bootstrap-primer-1/

  4. day1 python调用模块,密码加密

    import getpass #加密密码 username = input("username:") password = getpass.getpass("passwo ...

  5. dojo 代码调试

    安装 Firebug 使用firedug

  6. Qios RibbonForm QRibbonCaption添加qRibbonApplicationButton无法最大化问题

    winform 用了Qios DevSuite系列的控件. RibbonForm中QRibbonCaption添加qRibbonApplicationButton之后无法最大化. 修改qRibbonA ...

  7. ubuntu开启ROOT用户自动登录教程

    ub默认不开root很纠结,虽说是为了安全,但对于linux老鸟,老是sudo烦的很 开root方法: sudo passwd root 输入root密码 sudo gedit /etc/gdm/cu ...

  8. Apache 访问控制

    Apache访问控制 通过设置访问控制,可对网站进行权限管理,提高安全性. 参数介绍 <Directory />: 行为对根目录的限制 Options:允许使用控制目录特征的指令.他们包括 ...

  9. 剑指offer题解02-10

    02 单例模式 单例模式,是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例的特殊类.通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例.即一个类只有一个对象实例. 从具体实现角 ...

  10. idea setting

    input