使用dom4j工具:读取xml标签(二)

x33g5p2x  于2021-12-28 转载在 其他  
字(2.3k)|赞(0)|评价(0)|浏览(306)
package dom4j_read;

import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 读取xml的标签
 *		getRootElement():获取根标签
 *		getName():获取标签名称
 *		element("XX"):获取第一个XX名的子标签
 *		elements("XX"):获取所有XX名的子标签
 *		elements():获取所有标签
 *		element().element(). ~~~:可以多次套用
 *		 
 * @author Administrator
 *
 */
public class Demo02 {
	public static void main(String[] args) throws Exception {
		// 创建xml解析器对象
		SAXReader reader = new SAXReader();

		Document doc = reader.read(new File("./src/contact.xml"));

		// System.out.println(doc);
		
		/*
		 * 读取标签
		 */
		// 1.1 读取根标签
		Element rootElem = doc.getRootElement();
		System.out.println(rootElem);
		
		// 1.2 获取标签名称
		System.out.println(rootElem.getName());
		
		// 1.3 获取第一个子标签
		Element conElem = rootElem.element("contact");
		System.out.println(conElem);
		
		// 1.4获取所有同名的子标签(指定名字)
		List<Element> list = rootElem.elements("contact");
		// 遍历List
		// 几种方式?
		// 1)传统for循环
		/*
		for(int i=0; i<list.size(); i++) {
			System.out.println(list.get(i));
		}
		*/
		
		// 2)foreach循环
		for(Element e : list) {
			System.out.println(e);
		}
		System.out.println("--------------------------");
		// 3)迭代器
		/*
		Iterator<Element> it = list.iterator();
		while(it.hasNext()) {
			Element e =  it.next();
			System.out.println(e);
		}
		*/
		
		// 1.5 获取所有子标签(不指定名称)
		List<Element> eList = rootElem.elements();
		for(Element e : eList) {
			System.out.println(e);
		}
		System.out.println("--------------------------");
		// 1.6 拿到第一个contact标签的name标签
		Element nameElem = rootElem.element("contact").element("name");
		
		System.out.println(nameElem);
		
	}
}

xml中,结构如下:

<?xml version="1.0" encoding="gbk"?>
<contact-list>
	<contact id="001" name="eric">
		<name>张三</name>
		<gender>男</gender>
		<phone>134001114</phone>
		<email>zhangsan@qq.com</email>
		<address>成都</address>
	</contact>
	<contact id="002">
		<name>李四</name>
		<gender>男</gender>
		<phone>134001115</phone>
		<email>lisi@qq.com</email>
		<address>广州</address>
	</contact>
	<contact id="003">
		<name>王五</name>
		<gender>男</gender>
		<phone>134001116</phone>
		<email>wangwu@qq.com</email>
		<address>上海</address>
	</contact>
</contact-list>

相关文章