POPTEST老李分享DOM解析XML之java
POPTEST老李分享DOM解析XML之java
Java提供了两种XML解析器:树型解释器DOM(Document Object Model,文档对象模型),和流机制解析器SAX(Simple API for XML,XML简单API)。DOM可以将XML转换为树结构。
XML文档内容如下:
文件名:NameList.xml,文件路径:C:\Users\Tsybius\Desktop\NameList.xml
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
root
>
<
list1
>
<
person
id
=
"101"
name
=
"Tsybius"
remark
=
"1"
/>
<
person
id
=
"102"
name
=
"Galatea"
remark
=
"2"
/>
<
person
id
=
"103"
name
=
"Quintus"
remark
=
"3"
/>
<
person
id
=
"104"
name
=
"Atia"
remark
=
"4"
/>
<
person
id
=
"105"
name
=
"Justitia"
remark
=
"5"
/>
</
list1
>
<
list2
>
<
person
id
=
"201"
name
=
"Zhang"
remark
=
"a"
/>
<
person
id
=
"202"
name
=
"Wang"
remark
=
"b"
/>
<
person
id
=
"203"
name
=
"Li"
remark
=
"c"
/>
<
person
id
=
"204"
name
=
"Zhao"
remark
=
"d"
/>
<
person
id
=
"205"
name
=
"Liu"
remark
=
"e"
/>
</
list2
>
<
text
>TEXT</
text
>
</
root
>
package
XmlDomTest;
import
java.io.File;
import
java.io.IOException;
import
javax.xml.parsers.DocumentBuilder;
import
javax.xml.parsers.DocumentBuilderFactory;
import
javax.xml.parsers.ParserConfigurationException;
import
org.w3c.dom.Document;
import
org.w3c.dom.Element;
import
org.w3c.dom.NamedNodeMap;
import
org.w3c.dom.Node;
import
org.w3c.dom.NodeList;
import
org.w3c.dom.Text;
import
org.xml.sax.SAXException;
/**
* 使用DOM解析XML
* @author Tsybius
*
*/
public
class
XmlDomTest {
/**
* 使用DOM解析XML
* @param args
*/
public
static
void
main(String[] args) {
try
{
String filePath =
"C:\\Users\\Tsybius\\Desktop\\NameList.xml"
;
File f =
new
File(filePath);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(f);
//遍历节点方式1
Element root = doc.getDocumentElement();
System.out.println(
"根节点名:"
+ root.getNodeName());
NodeList children = root.getChildNodes();
for
(
int
i =
0
; i < children.getLength(); i++) {
Node child = children.item(i);
if
(child
instanceof
Element) {
Element childElement = (Element)child;
System.out.println(
"节点名:"
+ childElement.getNodeName());
if
(childElement.getNodeName().equals(
"list1"
)) {
//list1
//遍历节点方式2
//获取指定属性
for
(Node list1Node = childElement.getFirstChild();
list1Node !=
null
;
list1Node = list1Node.getNextSibling()) {
if
(list1Node
instanceof
Element) {
Element list1Element = (Element)list1Node;
System.out.print(
"person:"
);
System.out.print(
"id="
+ list1Element.getAttribute(
"id"
) +
";"
);
System.out.print(
"name="
+ list1Element.getAttribute(
"name"
) +
";"
);
System.out.print(
"remark="
+ list1Element.getAttribute(
"remark"
) +
";"
);
System.out.println();
}
}
}
else
if
(childElement.getNodeName().equals(
"list2"
)) {
//list2
//遍历节点方式2
//遍历所有属性
for
(Node list2Node = childElement.getFirstChild();
list2Node !=
null
;
list2Node = list2Node.getNextSibling()) {
if
(!(list2Node
instanceof
Element)) {
continue
;
}
NamedNodeMap attributes = ((Element)list2Node).getAttributes();
System.out.print(
"person:"
);
for
(
int
counter =
0
; counter < attributes.getLength(); counter++) {
Node attribute = attributes.item(counter);
if
(attribute ==
null
) {
continue
;
}
String name = attribute.getNodeName();
String value = attribute.getNodeValue();
System.out.print(name +
"="
+ value +
";"
);
}
System.out.println();
}
}
else
if
(childElement.getNodeName().equals(
"text"
)) {
//text
//获取文本值
Text textNode = (Text)childElement.getFirstChild();
String text = textNode.getData().trim();
System.out.println(
"text:"
+ text);
}
}
}
}
catch
(ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
根节点名:root
节点名:list1
person:id=101;name=Tsybius;remark=1;
person:id=102;name=Galatea;remark=2;
person:id=103;name=Quintus;remark=3;
person:id=104;name=Atia;remark=4;
person:id=105;name=Justitia;remark=5;
节点名:list2
person:id=201;name=Zhang;remark=a;
person:id=202;name=Wang;remark=b;
person:id=203;name=Li;remark=c;
person:id=204;name=Zhao;remark=d;
person:id=205;name=Liu;remark=e;
节点名:text
text:TEXT
POPTEST老李分享DOM解析XML之java的更多相关文章
- JAVA中使用DOM解析XML文件
XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...
- Java从零开始学四十二(DOM解析XML)
一.DOM解析XML xml文件 favorite.xml <?xml version="1.0" encoding="UTF-8" standalone ...
- Java解析XML文档(简单实例)——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...
- Java解析XML文档——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object M ...
- 精讲 org.w3c.dom(java dom)解析XML文档
org.w3c.dom(java dom)解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会 ...
- 老李分享:导出xml报告到手机
老李分享:导出xml报告到手机 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821 ...
- Android之DOM解析XML
一.DOM解析方法介绍 DOM是基于树形结构的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树,检索所需数据.分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和更新节点信息 ...
- 简单谈谈dom解析xml和html
前言 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.html,xml都是基于这个模型构造的.这也是一个W3C推出的标准.j ...
- xml语法、DTD约束xml、Schema约束xml、DOM解析xml
今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...
随机推荐
- Pangolin的使用
Pangolin 是一个可用于SLAM可视化的openGL库.目前有很多SLAM系统都用它作为可视化的工具.它的编译与安装过程问题不大,依赖也比较少.但最近我在单独使用它的时候,碰到了很奇怪的现象:我 ...
- Protege5.0.0入门学习
OWL本体的重要组成部分 Individuals:个体,代表一个领域里面的对象.可以理解成一个类的实例(instances of classes). Properties:属性,是两个个体之间的双重联 ...
- 架构师之路——里氏替换原则LSP
定义: 如果对每一个对类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型. 内容: 里氏替换原则通 ...
- LOGISTIC回归分析
前面的博客有介绍过对连续的变量进行线性回归分析,从而达到对因变量的预测或者解释作用.那么如果因变量是离散变量呢?在做行为预测的时候通常只有"做"与"不做的区别" ...
- linux 下apache2 安装
Apache安装要求 安装APR.APR-Util.PCRE,gcc-c++等包 Apache HTTP Server http://httpd.apache.org/download.cgi#ap ...
- 规范 : 过程 : login cookies sessionTimeOut
规范 用户登入网站将得到一个cookies,如果用户有2个account,各别登入admin page 和 client page,是会得到2个cookies. 在reload page时,后台会得到 ...
- 一位资深程序员给予Java初学者的学习路线建议
一位资深程序员给予Java初学者的学习路线建议 java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干 ...
- C#基础——数组(冒泡排序)
数组 所谓数组,就是相同数据类型的元素按一定的顺序的集合,就是把有限个类型相同的变量用一个名字来命名,然后用编号区分他们的变量的集合,这个名字称为数组名,编号称为下标.组成数组的各个变量称为数组的分量 ...
- 算法模板——sap网络最大流 3(递归+邻接矩阵)
实现功能:同之前 可以看见的是这次的程序优美了许多,代码简短了一倍还多,可是速度却是和原来的邻接表一个级别的(在Codevs上面草地排水那题的运行时间比较,但是显然数据很大时应该比那个慢些),原理差不 ...
- xml与json的原理,区别,优缺点.
1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...