dom4j操作xpath

使用dom4j支持XPATH操作:
         可以直接获取到目标元素,不需要层层解析。
         
          第一种形式:/AAA/DDD/BBB:表示一层一层的,AAA下面DDD下面的BBB
          第二种形式://BBB:表示和这个名称相同,只要名称是BBB,都能得到
          第三种形式:/*:表示所有元素
          第四种形式:BBB[1]:表示第一个BBB元素  、 BBB[last()]:表示最后一个元素
          第五种形式://BBB[@id]:表示只要BBB元素上面有id属性都能得到
          第六种形式://BBB[@id='XXX']:表示元素名称是BBB,在BBB上面有id属性,并且id的属性值是XXX
          
          使用dom4j默认不支持xpath,所以要导包
          在dom4j中提供了两个方法用来支持xpath
          1、selectNodes("xpath的表达式");获取多个节点

          2、selectSingleNode("xpath的表达式");获取一个节点

xml实例:



 
   
    张三  
    300 
    
   
    李四  
    20 
   

java代码:

import java.io.Reader;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class Dom4j_xpath {

	public static void main(String[] args) {
		//getNames();
		getName();
	}
	/**
	 * 获得所有的目标标签
	 */
	private static void getNames() {
		try {
			//创建SAX解析器
			SAXReader reader = new SAXReader();
			//得到document
			Document document = reader.read("src/XPATH/Person.xml");
			//得到所有的name元素
			List list = document.selectNodes("//name");
			//遍历  增强for循环
			for (Node name : list) {
				//得到name的值
				String s = name.getText();
				System.out.println(s);
			}
		} catch (DocumentException e) {
			e.printStackTrace();
		}
	}
	
	private static void getName() {
		try{
			//创建SAX解析器
			SAXReader reader = new SAXReader();
			//得到document
			Document document = reader.read("src/XPATH/Person.xml");
			//得到目标元素
			Node name = document.selectSingleNode("//student[@id='hhh']/name");
			//得到目标元素中的值
			String s = name.getText();
			System.out.println(s);
		}catch(Exception e){
			e.printStackTrace();
		}
	}
}

你可能感兴趣的:(java,XML)