Java读取xml文件——DOM解析《Dota2…

原创 2015年12月19日 09:52:33
尝试使用Java程序的DOM解析方式,解析文件《Dota2_Heros.xml》。

【代码如下】
package sina1_xml_dom;

import java.io.IOException;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class DomTest {
public static void main(String[] args) {
// 创建一个DocumentBuilderFactory对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//创建一个DocumentBuilder对象
DocumentBuilder db = dbf.newDocumentBuilder();
//通过DocumentBuilder的parse(String file Name)方法解析xml文件,该方法return Document类型的obj
Document document = db.parse("C:\\workspace se\\sina1_xml_dom\\xml\\Dota2_Heros.xml");  //这里使用的是绝对路径
//获取所有Hero节点的集合,getElementsByTagName_r() return NodeList类型的obj
NodeList herolist = document.getElementsByTagName_r("Hero"); 
//通过herolist的getLength()方法可以获取herolist长度
System.out.println("英雄池里一共有" + herolist.getLength() + "个英雄!!!");
System.out.println();
//遍历每一个hero节点
for (int i = 0; i < herolist.getLength();  i++){
System.out.println("=====开始遍历第" + (i + 1) + "个英雄=====");
//通过item(index)方法,获取一个hero节点,nNdelist的索引值从0开始
Node hero = herolist.item(i);
//获取hero节点的所有属性集合
NamedNodeMap attrs = hero.getAttributes();
System.out.println("第" + (i+1) + "个英雄共有" +attrs.getLength() + "个名字");
//解析hero节点的子节点
NodeList childNotes = hero.getChildNodes();
//遍历hero的属性
for (int j = 0; j < attrs.getLength(); j++){
//通过item(index)方法,获取hero节点的某一个属性
Node attr = attrs.item(j);
//获取属性名
System.out.print(attr.getNodeName());
//获取属性值
System.out.println("--" + attr.getNodeValue());
}
System.out.println("第" + (i+1) + "个英雄共有" + childNotes.getLength()/2 + "个属性资料:");
//遍历childNotes获取每个节点的子节点和节点值
for (int k = 0; k < childNotes.getLength(); k++){
//区分出text类型的node以及element类型的node(获取element类型的节点名)
if (childNotes.item(k).getNodeType() == Node.ELEMENT_NODE){
System.out.print("第" + (k+1)/2 + ":" + childNotes.item(k).getNodeName());
System.out.println(childNotes.item(k).getFirstChild().getNodeValue()); //该方法获取第一个子节点的内容
}
}
System.out.println("=====第" + (i + 1) + "个英雄资料结束=====");
System.out.println();
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
}catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

【运行结果如下】
英雄池里一共有2个英雄!!!

=====开始遍历第1个英雄=====
第1个英雄共有2个名字
Name1--影魔
Name2--Nevermore
第1个英雄共有13个属性资料:
第1:生命435
第2:魔法234
第3:力量15(+2.0)
第4:敏捷20(+2.9)
第5:智力18(+2.0)
第6:初始攻击35-41
第7:初始护甲1.8
第8:攻击范围500
第9:视野1800/800
第10:移动速度305
第11:弹道速度1200
第12:施法前后摇0.67/0.4
第13:攻击前后摇0.5/0.54
=====第1个英雄资料结束=====

=====开始遍历第2个英雄=====
第2个英雄共有1个名字
Name--瘟疫法师
第2个英雄共有13个属性资料:
第1:生命454
第2:魔法286
第3:力量16(+2.0)
第4:敏捷15(+1.7)
第5:智力22(+2.5)
第6:初始攻击45-49
第7:初始护甲4.22
第8:攻击范围550
第9:视野1800/800
第10:移动速度290
第11:弹道速度900
第12:施法前后摇0.7/0.8
第13:攻击前后摇0.4/0.77
=====第2个英雄资料结束=====

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chao2016/article/details/50357358

运用java读取xml文件---DOM 解析

读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵。 DOM解析的特性就是读取xml文件转换为 dom树形结...
  • topwqp
  • topwqp
  • 2013-03-21 16:59:20
  • 7906

Java 应用DOM方式解析XML文件

引入java为啥需要解析XML的方法?xml的优势:它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或...
  • qq_23473123
  • qq_23473123
  • 2016-05-15 13:53:25
  • 2700

Java解析XML文件方法之一(DOM)

DOM的全称是Document Object Model,也即文档对象模型。在应用程序中,基于DOM的XML分析器将一个XML文档转换成一个对象模型的集合(通常称DOM树),应用程序正是通过对...
  • zp357252539
  • zp357252539
  • 2015-08-29 08:45:12
  • 1611

利用DOM解析和创建xml文件

XML解析器是指可以解析XML文件的程序 常见解析器有 1.     SAX解析器,用于XML的简单API 2.     DOM解析器,文档对象模型 文档对象模型就是利用对象来把文档模型化,这...
  • moonhelena
  • moonhelena
  • 2016-07-20 23:03:49
  • 529

Python:Dom解析XML文件(读XML)

这一篇文章接着前一篇来接续讲解如何使用Dom方式操作XML数据,这一篇文章主要介绍如何解析(parse)XML文件,本文实例XML文件是上一篇的生成的文件,我们看看能不能完整的读出来,这个XML文件内...
  • zhou191954
  • zhou191954
  • 2012-12-03 22:36:16
  • 1242

FTP服务器流解析xml文件

  • 2013年06月24日 00:17
  • 477KB
  • 下载

XML文件读取——DOM方式

XML文件的存储 XML文件是以树的结构存储的,一个XML文件就是一个倒着的树,有一个根节点。根节点下有好多个子节点,然后节点有自己的属性,在标签中和标签名空一格添加属性(属性也可以作为节点的子节...
  • fantiantianlucky
  • fantiantianlucky
  • 2016-06-22 17:02:53
  • 1166

Java以DOM方式解析生成xml文件或字符串

写了代码java代码,测试了在jdk 1.8下使用dom方式操作xml的技术可行性。
  • lee353086
  • lee353086
  • 2016-07-18 15:50:24
  • 2098

Domj4读取XML文件--实现获取XML文件中所有的标签节点

Domj4读取XML文件--实现获取XML文件中所有的标签节点 contact.xml 张三 20 1234567 1234 222 lisi 2...
  • yanghui07216
  • yanghui07216
  • 2016-12-06 08:56:52
  • 557

如何解析本地和线上XML文件获取相应的内容

一、使用Dom解析本地XML 1、本地XML文件为:test.xml think in java 张三 家 ...
  • qq_34895697
  • qq_34895697
  • 2016-09-07 14:07:32
  • 2711
收藏助手
不良信息举报
您举报文章:Java读取xml文件——DOM解析《Dota2…
举报原因:
原因补充:

(最多只允许输入30个字)