java--通过DOM方式对xml文件进行读取的简单实例

代码如下:

package TestDemo;

import javax.naming.NameNotFoundException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
//当xml的编码和java默认的不一样时会出现错误
//通过DOM方式读取xml文件
public class DcuDemo {
	public static void dom1() throws Exception{
		
		//先创建一个Documengtbuilderfactory对象
		DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstance();
		//创建一个documentBuilder对象
		DocumentBuilder db=dbf.newDocumentBuilder();
		//通过方法parse加载books.xml文件到当前页面下
		 Document document=db.parse("books.xml");
		 //返回的是一个包含所有book节点的集合
		NodeList booklist= document.getElementsByTagName("book");
		//遍历包含所有book节点的集合
		for(int i=0;i<booklist.getLength();i++){
			System.out.println("----开始第"+(i+1)+"本书的遍历----");
			//通过iteam方法获取每一个book属性
			Node book=booklist.item(i);
			//遍历book的属性
			 NamedNodeMap nnm= book.getAttributes();
			 System.out.println("第"+(i+1)+"本书共有"+ nnm.getLength()+"个属性");
			//接下来遍历属性
			 for(int q=0;q<nnm.getLength();q++){
				 
				Node node= nnm.item(q);
				
				 NodeList list= book.getChildNodes();
				//获取了属性名
				 String str1=node.getNodeName();
				 System.out.println("属性名为:"+str1);
				 //获取属性值
				 String str2=node.getNodeValue();		
				 System.out.println("属性名值:"+str2);				 
				 //输出节点的个数
				 System.out.println("第"+(i+1)+"本书的节点书为:"+list.getLength());
				//打印出节点名和节点值
				 for(int k=0;k<list.getLength();k++){
					Node jiedian= list.item(k);					
					//只有当类型为Node.ELEMENT_NODE才进行输出
					if(jiedian.getNodeType()==Node.ELEMENT_NODE){
						//获取节点名和节点值并输出
						 String name=jiedian.getNodeName();
						 System.out.print(name+"   ");
						 //因为element类型value是null,所以不能通过getvalue方法进行读取
//						 String value1=jiedian.getNodeValue();					 
//						 System.out.println("value");	
						 //获取节点值的方法并输出、
//						String value2= jiedian.getFirstChild().getNodeValue();
//						System.out.println(value2);						
						//此方法将会获取此节点下所有的节点值
						String value3=jiedian.getTextContent();
						System.out.println(value3);												 
					}					
				 }				 				 				
			 }
			 System.out.println("----结束第"+(i+1)+"本书的遍历----");
		}
		 
	}

	public static void main(String[] args) throws Exception{
		
		dom1();
		
	}
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值