DOM将整个XML文件加载到内存中,并构建出节点树;应用程序可以通过遍历节点树的方式来解析XML文件中的各个节点、属性等信息;
这种方式便于对XML节点的添加修改等,而且解析也很方便,然后它比较耗费内存,解析速度也不快

sax解析: http://www.cnblogs.com/gavinYang/p/3505543.html  
dom4j解析: http://www.cnblogs.com/gavinYang/p/3505535.html
jdom解析: http://www.cnblogs.com/gavinYang/p/3505530.html

Java代码:

 1 package com.test;
 2
 3 import java.io.File;
 4 import java.util.ArrayList;
 5 import java.util.List;
 6 import javax.xml.parsers.DocumentBuilder;
 7 import javax.xml.parsers.DocumentBuilderFactory;
 8 import org.w3c.dom.Document;
 9 import org.w3c.dom.Element;
10 import org.w3c.dom.Node;
11 import org.w3c.dom.NodeList;
12
13 public class DomXML {
14
15     public static void main(String[] args) {
16         try {
17             File file = new File("e:/People.xml");
18             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
19             DocumentBuilder builder = factory.newDocumentBuilder();
20             Document document = builder.parse(file);
21             Element element = document.getDocumentElement();
22
23             List<People> peopleList = new ArrayList<People>();
24             NodeList peopleNodes = element.getElementsByTagName("People");
25             for(int i=0;i<peopleNodes.getLength();i++){
26                 People people = new People();
27                 Element peopleElement = (Element) peopleNodes.item(i);
28                 people.setId(peopleElement.getAttribute("id"));
29                 NodeList childPeopleNodes = peopleElement.getChildNodes();
30                 for(int j=0;j<childPeopleNodes.getLength();j++){
31                     //DOM解析时候注意子节点前面的空格也会被解析
32                     if(childPeopleNodes.item(j) instanceof Element){
33                         Element childPeopleElement = (Element) childPeopleNodes.item(j);
34                         if(childPeopleElement.getNodeType()==Node.ELEMENT_NODE){
35                             if(childPeopleElement.getNodeName().equals("Name")){
36                                 people.setEnglishName(childPeopleElement.getAttribute("en"));
37                                 people.setName(childPeopleElement.getTextContent());
38                             }
39                             else if(childPeopleElement.getNodeName().equals("Age")){
40                                 people.setAge(childPeopleElement.getTextContent());
41                             }
42                         }
43                     }
44                 }
45                 peopleList.add(people);
46             }
47
48             for(People people : peopleList){
49                 System.out.println(people.getId()+"\t"+people.getName()+"\t"+people.getEnglishName()+"\t"+people.getAge());
50             }
51
52         } catch (Exception e) {
53             // TODO 自动生成的 catch 块
54             e.printStackTrace();
55         }
56
57
58     }
59 }

People对象:

 1 package com.test;
 2
 3 public class People {
 4     private String id;
 5     private String name;
 6     private String englishName;
 7     private String age;
 8     public String getId() {
 9         return id;
10     }
11     public void setId(String id) {
12         this.id = id;
13     }
14     public String getName() {
15         return name;
16     }
17     public void setName(String name) {
18         this.name = name;
19     }
20     public String getEnglishName() {
21         return englishName;
22     }
23     public void setEnglishName(String englishName) {
24         this.englishName = englishName;
25     }
26     public String getAge() {
27         return age;
28     }
29     public void setAge(String age) {
30         this.age = age;
31     }
32
33 }

xml:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <PeopleList>
 3     <People id="1">
 4         <Name en='zhangsan'>张三</Name>
 5         <Age>20</Age>
 6     </People>
 7     <People id="2">
 8         <Name en='lisi'>李四</Name>
 9         <Age>30</Age>
10     </People>
11 </PeopleList>

转载于:https://www.cnblogs.com/gavinYang/p/3505523.html

Java中Dom解析XML相关推荐

  1. java中DOM解析xml文件

    本文介绍了如何利用DOM(即Document Object Model文档对象模型)解析xml文件. 首先有一个xml文件: <?xml version=\"1.0\" en ...

  2. java dom_Java DOM 解析 XML详解

    W3C制定了一套书写XML分析器的标准接口规范--DOM. 除此以外,XML_DEV邮件列表中的成员根据应用的需求也自发地定义了一套对XML文档进行操作的接口规范--SAX. 这两种接口规范各有侧重, ...

  3. Java中DOM4J解析xml文件浅析

      DOM4J解析它是JDOM的一种智能分支.它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持.XML Schema支持以及用于大文档或流化文档的基于事件的处理.它还提供了构建文档表 ...

  4. 在java中在线解析XML文件内容

    这里的天气属性有很多,可以根据自己的需求获取天气属性 这里用到了org.json的jar包,因为要使用XML属性解析数据,还有alibab.JAONObject的jar包  /*** 天气预报-更新* ...

  5. Java之XML解析-使用dom(org.w3c.dom)解析XML

    转自: Java之XML解析-使用dom(org.w3c.dom)解析XML 下文笔者将讲述使用W3C(org.w3c.dom)提供的接口,解析XML文档的方法分享 W3C解析xml文档的方法:将整个 ...

  6. Android程序解析xml至文档中,Android开发之DOM解析xml文件的方法

    本文实例讲述了Android中DOM解析xml文件的方法.分享给大家供大家参考,具体如下: 一.在assets文件中写xml文件 李明 30 李向梅 25 二.在service中写一个DOM解析的操作 ...

  7. java解析xml实例_在java中使用dom解析xml的示例分析

    本篇文章介绍了,在java中使用dom解析xml的示例分析.需要的朋友参考下 dom是个功能强大的解析工具,适用于小文档 为什么这么说呢?因为它会把整篇xml文档装载进内存中,形成一颗文档对象树 总之 ...

  8. JAVA中利用DOM解析XML文档

    JAVA中利用DOM解析XML文档 package org.sws.utils; import java.io.File;import java.io.IOException; import java ...

  9. java中document解析jsp,JSP基于dom解析xml实例详解

    本文实例讲述了JSP基于dom解析xml的方法.分享给大家供大家参考,具体如下: 初次学习用dom操作xml文件,有很多不足之处,牛人多给点建议,练习时我没对中文做乱码处理,也没做验证哦!O(∩_∩) ...

最新文章

  1. 我应该如何道德地接近用户密码存储以便以后的明文检索?
  2. 第7部分 组策略应用
  3. python【蓝桥杯vip练习题库】ALGO-189 P0505(阶乘问题)
  4. hdu 5045 费用流
  5. 三种css样式表及其优先级
  6. python中循环结构关键字_Python的循环结构,也简单!
  7. 数据结构与算法(C语言) | 栈和队列——栈(自己做过测试)
  8. 数据科学家数据分析师_站出来! 分析人员,数据科学家和其他所有人的领导和沟通技巧...
  9. 免费json客户端解析
  10. 详细讲解C++ 类的继承
  11. [安卓学习]AndroidManifest.xml文件内容详解
  12. 自学Python Day1
  13. 22-微信小程序商城 我的订单(微信小程序商城开发、小程序毕业设计、小程序源代码)(黄菊华-微信小程序开发教程)
  14. 宋宝华:关于Ftrace的一个完整案例
  15. macbook更新系统服务器,苹果电脑如何升级系统_苹果电脑怎么更新版本-win7之家...
  16. JMeter 请求报Response code:415错误
  17. 浙江大学14届计算机学院孙晓宇,郑州外国语学校2011年保送生录取名单
  18. 矩和质心之积分的应用
  19. win10右键卡顿原因_win10系统点击鼠标右键出现卡顿的解决方法
  20. 4线电子围栏安装示意图_电子围栏系统安装教程(图文)

热门文章

  1. php创建类用什么关键字,PHP面向对象开发之类的常用关键字
  2. 在php中单引号和双引号的区别错误的是___________,浅谈PHP中单引号和双引号到底有啥区别呢?...
  3. 008_Spring Data JPA原生SQL
  4. 网页中嵌套网页flush_如何修改网页中的内容?
  5. php函数有哪三种,【后端开发】php函数可以分为哪三种
  6. igmpproxy_Linux IGMP PROXY 学习笔记 之二 igmp proxy的处理流程分析
  7. php base64_decode 图片,PHP保存Base64图片base64_decode的问题整理
  8. cassandra本地连接失败_本地网络发现失败的解决方法连接到OS X中的服务器的问题 | MOS86...
  9. 生鲜配送小程序源码_生鲜配送小程序开发
  10. java判断星期天_java实现一个月的最后一个星期天