Dom4j读取XML

Demo4j读取xml文档内容
节点
    Iterator    Element.nodeIterator();//获取当前标签节点下的所有子节点
        
标签
    Element    Document.getRootElement();//获取xml文档的根标签
    Element    Element.element("标签名");//获取指定名称的第一个
    Iterator<Element>    Element.elementIterator("标签名");//获取指定名称的所有子标签
    List<Element>    Element.elements();//获取所有直接子标签
    Element Element.elementByID("ID");//获取属性为“ID”的标签。注意这里的“ID”必须为大写
    
属性
    String   Element.attributeValue("属性名") //获取指定名称的属性值
    Attribute    Element.attribute("属性名");//获取指定名称的属性对象    
    Attribute.getName()  //获取属性名称
    Attibute.getValue()  //获取属性值
    List<Attribute>     Element.attributes();  //获取所有属性对象
    Iterator<Attribute>        Element.attibuteIterator(); //获取所有属性对象
文本
    Element.getText();  //获取当前标签的文本
    Element.elementText("子标签名") //获取当前标签的指定名称的子标签的文本内容  

Demo:
package com.dom4j.red;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Author:Liu Zhiyong(QQ:1012421396)
* Version:Version_1
* Date:
* Desc:
Demo4j读取xml文档内容
节点
    Iterator    Element.nodeIterator();//获取当前标签节点下的所有子节点
        
标签
	Element    Document.getRootElement();//获取xml文档的根标签
    Element    Element.element("标签名");//获取指定名称的第一个
    Iterator<Element>    Element.elementIterator("标签名");//获取指定名称的所有子标签
    List<Element>    Element.elements();//获取所有直接子标签
    
属性:
	String   Element.attributeValue("属性名") //获取指定名称的属性值
	Attribute    Element.attribute("属性名");//获取指定名称的属性对象	
	Attribute.getName()  //获取属性名称
	Attibute.getValue()  //获取属性值
	List<Attribute>	 Element.attributes();  //获取所有属性对象
	Iterator<Attribute>		Element.attibuteIterator(); //获取所有属性对象
文本:
	Element.getText();  //获取当前标签的文本
	Element.elementText("标签名") //获取当前标签的指定名称的子标签的文本内容
*/
public class Demo2 {
	public static Document doc;
	@BeforeClass
	public static void getDocument() throws Exception {
		//获取xml解析对象
		SAXReader saxReader = new SAXReader();
		//读取xml文档,获取Document对象
		doc = saxReader.read(new File("./src/contact.xml"));
	}
	
	//获取节点信息
	@Test
	public void test1() throws Exception {
		//得到当前节点下的所有子节点(不包括孙节点及其以下的节点)
		Iterator<Node> iterator = doc.nodeIterator();
		while(iterator.hasNext()){//判断是否有下一个元素
			Node node = iterator.next();//取出元素
			String name = node.getName();
			System.out.println(name);
			
			//继续取出下面的节点
			//只有标签节点下才有子节点
			//判断当前节点是否是标签节点
			if(node instanceof Element){
				Element ele = (Element)node;
				Iterator<Node> iterator2 = ele.nodeIterator();
				while(iterator2.hasNext()){
					Node node2 = iterator2.next();
					String name2 = node2.getName();
					System.out.println(name2);
				}
			}
		}
	}
	
	/**
	 * 遍历xml文档的所有节点
	 * @throws Exception
	 */
	@Test
	public void test2() throws Exception {
		//获取根标签,xml有且只有一个根标签
		Element rootEle = doc.getRootElement();
		getChildNodes(rootEle);
	}
	
	/**
	 * 获取传入标签下的所有子节点
	 * @param ele
	 */
	private void getChildNodes(Element ele){
		System.out.println(ele.getName());
		//得到子节点
		Iterator<Node> it = ele.nodeIterator();
		while(it.hasNext()){
			Node node = it.next();
			
			//判断是否是标签节点
			if(node instanceof Element){
				Element ele2 = (Element)node;
				//递归
				getChildNodes(ele2);
			}
		}
	}
	/**
	 * 获取标签
	 * @throws Exception
	 */
	@Test
	public void test3() throws Exception {
		//得到根标签
		Element rootEle = doc.getRootElement();
		//得到标签的名称
		String name = rootEle.getName();
		System.out.println(name);
		System.out.println("=============================");
		
		//得到当前标签下的第一个指定名称的子标签(不包括孙节点及其以下的节点)
		Element contactElement = rootEle.element("contact");
		System.out.println(contactElement.getName());
		
		System.out.println("=============================");
		
		//得到当前标签下指定名称的所有子标签(不包括孙节点及其以下的节点)
		Iterator<Element> it = rootEle.elementIterator("contact");
		while(it.hasNext()){
			Element ele = it.next();
			System.out.println(ele.getName());
		}
		System.out.println("=============================");
		
		//得到当前标签下的所有子标签(不包括孙节点及其以下的节点)
		List<Element> list = rootEle.elements();
		for(Element ele : list){
			System.out.println(ele.getName());
		}
		System.out.println("=============================");
		
		//获取更深层次的标签(只能一层一层的获取)
		Element nameEle = doc.getRootElement().element("contact").element("name");
		System.out.println(nameEle.getName());
	}
	
	/**
	 * 读取属性(先获取属性所在标签对象,然后才能获取属性)
	 * @throws Exception
	 */
	@Test
	public void test4() throws Exception {
		//获取属性所在的标签对象
		Element ele = doc.getRootElement().element("contact");
		//获取指定属性名称的属性对象
		Attribute idAtt = ele.attribute("id");
		System.out.println(idAtt.getName() + ":" + idAtt.getValue());
		
		System.out.println("========================");
		
		//根据指定名称的属性获取属性值
		String attValue = ele.attributeValue("id");
		System.out.println(attValue);
		System.out.println("========================");
		
		//获取所有属性对象
		List<Attribute> list = ele.attributes();
		//遍历属性对象集合
		for(Attribute att : list){
			System.out.println(att.getName() + ":" + att.getValue());
		}
	}
	
	/**
	 * 获取文本(先获取标签,再获取文本)
	 * @throws Exception
	 */
	@Test
	public void test5() throws Exception {
		
		/**
		 * 注意:空格和换行也是xml的内容
		 */
		//获取根标签下的文本
		String text = doc.getRootElement().getText();
		System.out.println(text);
		System.out.println("========================");
		
		//先获取标签
		Element nameEle = doc.getRootElement().element("contact").element("name");
		//得到文本
		String text1 = nameEle.getText();获取当前标签的文本
		System.out.println(text1);
		System.out.println("========================");
		
		//获取当前标签的指定名称的子标签的文本内容
		String text2 = doc.getRootElement().element("contact").elementText("name");
		System.out.println(text2);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值