加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 02:11:45 所属栏目:百科 来源:网络整理
导读:Domj4读取XML文件--实现获取XML文件中所有的标签节点 contact.xml ?xml version="1.0" encoding="GBK"?contactList contact id="001"name张三/nameage20/agephone1234567/phoneemail1234/emailqq222/qq/contactcontact id="002"namelisi/nameage20/agephone1

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

contact.xml

<?xml version="1.0" encoding="GBK"?>
<contactList>
    <contact id="001">
		<name>张三</name>
		<age>20</age>
		<phone>1234567</phone>
		<email>1234</email>
		<qq>222</qq>
	</contact>
	<contact id="002">
		<name>lisi</name>
		<age>20</age>
		<phone>1234567</phone>
		<email>1234</email>
		<qq>222</qq>
	</contact>
</contactList>


Demo2.java

实现获取XML文件contact.xml中的所有节点

package gz.itcast.a_dom4j_read;

import java.io.File;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.Test;

/*
 * 第二个dome4j读取XML文件内容的例子
 * 节点
 * 标签
 * 属性
 * 文本
 */
public class Demo2 {
	/*
	 * 得到节点信息
	 * 
	 */
	@Test
	public void test1() throws Exception{
		SAXReader reader = new SAXReader();
		Document doc = reader.read(new File("./src/contact.xml"));
		//nodeIterator:得到当前节点下的所有子节点对象(不包含孙节点以下的节点)
		Iterator<Node> it = doc.nodeIterator();
		while(it.hasNext()){
			Node node = it.next();//取出元素
			
			String name = node.getName();//得到结点名称
			System.out.println(name);
			//继续取出其下面的子节点
			//自由标签节点才有子节点
			//判断当前节点是否是标签节点
			if(node instanceof Element){
				Element elem = (Element)node;
				Iterator<Node> it2 = elem.nodeIterator();
				while(it2.hasNext()){
					Node n2 = it2.next();
					System.out.println(n2.getName());
				}
			}
		}
	}
	
	/*
	 * 遍历XML文档的所有节点
	 */
	@Test
	public void test2() throws Exception{
		//读取XML文档,返回Document对象
		SAXReader reader = new SAXReader();
		Document doc = reader.read(new File("./src/contact.xml"));
		
		//得到根标签
		Element rooElem = doc.getRootElement();
		getChildNodes(rooElem);
	}
	/*
	 * 获取传入的标签下的所有子节点
	 */
	private void getChildNodes(Element elem) {
		System.out.println(elem.getName());
		
		//得到子节点
		Iterator<Node> it = elem.nodeIterator();
		while(it.hasNext()){
			Node node = it.next();
			//判断是否是标签节点
			if(node instanceof Element){
				Element el = (Element)node;
				//递归取下面的所有节点
				getChildNodes(el);
			}
		}
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读