xml-使用dom去遍历xml文件和获取指定节点信息

classes.xml:
<?xml version="1.0" encoding="utf-8" ?>
<class>
<stu hobby="read">
	<name>杨过</name>
	<sex>男</sex>
	<age>30</age>
	<intro>学习刻苦</intro>
</stu>
<stu>
	<name>林青霞</name>
	<sex>女</sex>
	<age>32</age>
	<intro>是一个好学生</intro>
</stu>
</class>
TestXml1.java
package com.hyj;

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.Node;
import org.w3c.dom.NodeList;

public class TestXml1 {
	public static void main(String []args) throws Exception{
		//创建一个DocumentBuilderFactory,得到创建DOM解析器工厂
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
		//通过DocumentBuilderFactory,得到一个DocumentBuilder对象(解析器对象)
		DocumentBuilder dBuilder=dbf.newDocumentBuilder();
		//指定解析哪个xml文件
		Document document=dBuilder.parse("src/classes.xml");

//		System.out.println(document);
		read(document);
	}
	
//	static boolean flag=false;
	//具体的查询某个学生的信息(先手第一个学生的所有信息)
	//请考虑如何获得某个元素的属性值,(取出)
	public static void read(Document doc){
		NodeList n1=doc.getElementsByTagName("stu");
		//取出第一个学生
		Element stu=(Element)n1.item(0);
		System.out.println("学生的爱好是"+stu.getAttribute("hobby"));
		Element name=(Element) stu.getElementsByTagName("name").item(0);
		System.out.println(name.getTextContent());
		
		
//		//获得名为stu的节点
//		NodeList nodelist=doc.getElementsByTagName("stu");
//		//分别学生的node
//		for(int a=0;a<nodelist.getLength();a++){
//			Node node=nodelist.item(a);
//			NodeList chilenodelist=node.getChildNodes();
//			for(int b=0;b<chilenodelist.getLength();b++){
//				if(chilenodelist.item(b).getNodeType()==chilenodelist.item(b).ELEMENT_NODE){
//					System.out.println(chilenodelist.item(b).getNodeName()+" : "+chilenodelist.item(b).getTextContent());
//
//				}
//			}
//			System.out.println("----------------------------------------");
//		}
		
//		System.out.println(nodelist.getLength());
		
		
		
		
		//取出node的子节点
//		NodeList nodelist=node.getChildNodes();
//		for(int i=0;i<nodelist.getLength();i++){
//			//再去显示
//			Node n=nodelist.item(i);
//			if(n.getNodeName().equals("stu")){
//				flag=true;
//				read(n);
//				flag=false;
//			}
//			if(flag==true&&n.getNodeType()==n.ELEMENT_NODE)System.out.println(n.getNodeName());
//			read(n);
//		}

	}
	
	
	//遍历该xml文件
	public static void list(Node node){
		if(node.getNodeType()==node.ELEMENT_NODE)
		System.out.println("名字:"+node.getNodeName());
		//取出node的子节点
		NodeList nodelist=node.getChildNodes();
		for(int i=0;i<nodelist.getLength();i++){
			//再去显示
			Node n=nodelist.item(i);
			list(n);
		}
	}
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值