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>[email protected]</email> <address>成都</address> </contact> <contact id="002"> <name>李四</name> <gender>男</gender> <phone>134001115</phone> <email>[email protected]</email> <address>广州</address> </contact> <contact id="003"> <name>王五</name> <gender>男</gender> <phone>134001116</phone> <email>[email protected]</email> <address>上海</address> </contact> </contact-list>