java-DOM解析xml文档

xml文档中的常见节点:

[img]http://dl.iteye.com/upload/attachment/0061/8033/28bc3e99-fa04-3620-b6b9-0d8514ebe714.png[/img]



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


public class code10_3 {
static Document document;

public static void main(String args[]){
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try{
DocumentBuilder db = dbf.newDocumentBuilder();
//读取xml文档
document = db.parse(new File("G:\\EclipseWorkPlace\\test.xml"));
//获得根元素
Node root = document.getDocumentElement();
System.out.println("根节点的名字是:" + root.getNodeName());
//获得根元素的子节点列表
NodeList childs = root.getChildNodes();
System.out.println("子节点的长度是:" + childs.getLength());
getElement(childs);
}catch (Exception e){
System.out.println(e);
}
}

public static void getElement(NodeList childs){
int i=0;
if (childs.getLength() == 0){
//该孩子没有子节点
System.out.println("该孩子没有子节点!");
return;
}

for (i=0; i<childs.getLength(); i++){
//取得第i个子节点
Node node = childs.item(i);
//获取节点的类型,可以是ElementNode,TextNode,DocumentNode等
short nodetype = node.getNodeType();
/*ElementNode类型的节点可以包含子节点和属性等*/
if (nodetype == Node.ELEMENT_NODE){
//得到节点的名称
String name = node.getNodeName();
String attrValue = "", attrName = "";
System.out.println("This is element! name is:" + name);
if (node.hasAttributes()){

NamedNodeMap attrlist = node.getAttributes();
for (int j=0; j<attrlist.getLength(); j++){
Node attrNode = attrlist.item(j);
attrName = attrNode.getNodeName();
attrValue = attrNode.getNodeValue();
System.out.println("this element attr is:"+
attrValue + ";attrname is :" + attrName);
}
}

//如有子节点,递归调用getElement()
if (node.hasChildNodes()){
getElement(node.getChildNodes());
}
}

/*Text类型节点没有子节点,节点名为#text,节点的值为XML文档中的元素值*/
if (nodetype == Node.TEXT_NODE){
//该节点的name是“#text”
String txtName = node.getNodeName();
//取出Text类型节点的值
Node thisparent = node.getParentNode();
Node txtNode = thisparent.getChildNodes().item(0);
String txtValue = txtNode.getNodeValue();
if (txtValue.trim().length() > 0){
System.out.println("txtName=" + txtName +
"; txtValue = " + txtValue.trim());
}
}
}
}
}



<?xml version="1.0" encoding='utf-8'?>
<completedRequest currentTime='' startDay='2009-12-23'
endDay='2009-12-23'>
<building buildingName='1'>
<floor floorName='1'>
<line lineName='N1'>
<completedInfo seatNo='11' responseTime='11:25'
RepairTime='11:23'>
<completedDetail requestTime='11:23'
requestStaffNo='H0050' requestStaffName='张三' responseTime='11:25'
responseStaffNo='J332' responseStaffName='李四' completeTime='11:50'
completeStaffNo='Y6500' completeStaffName='梁五'>
</completedDetail>
</completedInfo>

<completedInfo seatNo='12' responseTime='11:25'
RepairTime='11:23'>
<completedDetail requestTime='11:23'
requestStaffNo='H00501' requestStaffName='张三1' responseTime='11:25'
responseStaffNo='J3321' responseStaffName='李四1' completeTime='11:50'
completeStaffNo='Y65001' completeStaffName='梁五1'>
</completedDetail>
</completedInfo>
</line>
</floor>
</building>
<building buildingName='1'>
<floor floorName='1'>
<line lineName='N1'>
<completedInfo seatNo='11' responseTime='11:25'
RepairTime='11:23'>
<completedDetail requestTime='11:23'
requestStaffNo='H0050' requestStaffName='张三' responseTime='11:25'
responseStaffNo='J332' responseStaffName='李四' completeTime='11:50'
completeStaffNo='Y6500' completeStaffName='梁五'>
</completedDetail>
</completedInfo>

<completedInfo seatNo='12' responseTime='11:25'
RepairTime='11:23'>
<completedDetail requestTime='11:23'
requestStaffNo='H00501' requestStaffName='张三1' responseTime='11:25'
responseStaffNo='J3321' responseStaffName='李四1' completeTime='11:50'
completeStaffNo='Y65001' completeStaffName='梁五1'>
</completedDetail>
</completedInfo>
</line>
</floor>
</building>

<building buildingName='1'>
<floor floorName='1'>
<line lineName='N1'>
<completedInfo seatNo='11' responseTime='11:25'
RepairTime='11:23'>
<completedDetail requestTime='11:23'
requestStaffNo='H0050' requestStaffName='张三' responseTime='11:25'
responseStaffNo='J332' responseStaffName='李四' completeTime='11:50'
completeStaffNo='Y6500' completeStaffName='梁五'>
</completedDetail>
</completedInfo>

<completedInfo seatNo='12' responseTime='11:25'
RepairTime='11:23'>
<completedDetail requestTime='11:23'
requestStaffNo='H00501' requestStaffName='张三1' responseTime='11:25'
responseStaffNo='J3321' responseStaffName='李四1' completeTime='11:50'
completeStaffNo='Y65001' completeStaffName='梁五1'>
</completedDetail>
</completedInfo>
</line>
</floor>
</building>

</completedRequest>


结果:
=============================================================
根节点的名字是:completedRequest
子节点的长度是:7
This is element! name is:building
this element attr is:1;attrname is :buildingName
This is element! name is:floor
this element attr is:1;attrname is :floorName
This is element! name is:line
this element attr is:N1;attrname is :lineName
This is element! name is:completedInfo
this element attr is:11:23;attrname is :RepairTime
this element attr is:11:25;attrname is :responseTime
this element attr is:11;attrname is :seatNo
This is element! name is:completedDetail
this element attr is:梁五;attrname is :completeStaffName
this element attr is:Y6500;attrname is :completeStaffNo
this element attr is:11:50;attrname is :completeTime
this element attr is:张三;attrname is :requestStaffName
this element attr is:H0050;attrname is :requestStaffNo
this element attr is:11:23;attrname is :requestTime
this element attr is:李四;attrname is :responseStaffName
this element attr is:J332;attrname is :responseStaffNo
this element attr is:11:25;attrname is :responseTime
This is element! name is:completedInfo
this element attr is:11:23;attrname is :RepairTime
this element attr is:11:25;attrname is :responseTime
this element attr is:12;attrname is :seatNo
This is element! name is:completedDetail
this element attr is:梁五1;attrname is :completeStaffName
this element attr is:Y65001;attrname is :completeStaffNo
this element attr is:11:50;attrname is :completeTime
this element attr is:张三1;attrname is :requestStaffName
this element attr is:H00501;attrname is :requestStaffNo
this element attr is:11:23;attrname is :requestTime
this element attr is:李四1;attrname is :responseStaffName
this element attr is:J3321;attrname is :responseStaffNo
this element attr is:11:25;attrname is :responseTime
This is element! name is:building
this element attr is:1;attrname is :buildingName
This is element! name is:floor
this element attr is:1;attrname is :floorName
This is element! name is:line
this element attr is:N1;attrname is :lineName
This is element! name is:completedInfo
this element attr is:11:23;attrname is :RepairTime
this element attr is:11:25;attrname is :responseTime
this element attr is:11;attrname is :seatNo
This is element! name is:completedDetail
this element attr is:梁五;attrname is :completeStaffName
this element attr is:Y6500;attrname is :completeStaffNo
this element attr is:11:50;attrname is :completeTime
this element attr is:张三;attrname is :requestStaffName
this element attr is:H0050;attrname is :requestStaffNo
this element attr is:11:23;attrname is :requestTime
this element attr is:李四;attrname is :responseStaffName
this element attr is:J332;attrname is :responseStaffNo
this element attr is:11:25;attrname is :responseTime
This is element! name is:completedInfo
this element attr is:11:23;attrname is :RepairTime
this element attr is:11:25;attrname is :responseTime
this element attr is:12;attrname is :seatNo
This is element! name is:completedDetail
this element attr is:梁五1;attrname is :completeStaffName
this element attr is:Y65001;attrname is :completeStaffNo
this element attr is:11:50;attrname is :completeTime
this element attr is:张三1;attrname is :requestStaffName
this element attr is:H00501;attrname is :requestStaffNo
this element attr is:11:23;attrname is :requestTime
this element attr is:李四1;attrname is :responseStaffName
this element attr is:J3321;attrname is :responseStaffNo
this element attr is:11:25;attrname is :responseTime
This is element! name is:building
this element attr is:1;attrname is :buildingName
This is element! name is:floor
this element attr is:1;attrname is :floorName
This is element! name is:line
this element attr is:N1;attrname is :lineName
This is element! name is:completedInfo
this element attr is:11:23;attrname is :RepairTime
this element attr is:11:25;attrname is :responseTime
this element attr is:11;attrname is :seatNo
This is element! name is:completedDetail
this element attr is:梁五;attrname is :completeStaffName
this element attr is:Y6500;attrname is :completeStaffNo
this element attr is:11:50;attrname is :completeTime
this element attr is:张三;attrname is :requestStaffName
this element attr is:H0050;attrname is :requestStaffNo
this element attr is:11:23;attrname is :requestTime
this element attr is:李四;attrname is :responseStaffName
this element attr is:J332;attrname is :responseStaffNo
this element attr is:11:25;attrname is :responseTime
This is element! name is:completedInfo
this element attr is:11:23;attrname is :RepairTime
this element attr is:11:25;attrname is :responseTime
this element attr is:12;attrname is :seatNo
This is element! name is:completedDetail
this element attr is:梁五1;attrname is :completeStaffName
this element attr is:Y65001;attrname is :completeStaffNo
this element attr is:11:50;attrname is :completeTime
this element attr is:张三1;attrname is :requestStaffName
this element attr is:H00501;attrname is :requestStaffNo
this element attr is:11:23;attrname is :requestTime
this element attr is:李四1;attrname is :responseStaffName
this element attr is:J3321;attrname is :responseStaffNo
this element attr is:11:25;attrname is :responseTime
===============================================================
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值