xpath操作xml

     我们使用dom4j查找某个结点时,需要从根结点开始遍历查找,这时候如果我们xml文件的目录很深的话,那么这种做法显示是不可取的。

  这时候我们可以利用xpath操作xml文档。下面列举一些xpath常见的应用:

  

 

表达式 描述
nodename 选取此节点的所有子节点。
/ 从根节点选取。
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
. 选取当前节点。
.. 选取当前节点的父节点。
@ 选取属性。

实例

<?xml version="1.0" encoding="ISO-8859-1"?>

<bookstore>

<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>

<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>

</bookstore>


在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:

路径表达式 结果
bookstore 选取 bookstore 元素的所有子节点。
/bookstore

选取根元素 bookstore。

注释:假如路径起始于正斜杠( / ),则此路径始终代表到某元素的绝对路径!

bookstore/book 选取属于 bookstore 的子元素的所有 book 元素。
//book 选取所有 book 子元素,而不管它们在文档中的位置。
bookstore//book 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。
//@lang 选取名为 lang 的所有属性。

下面是我们实现遍历xml文档中所有name结点,只需要下面的方法就可以实现了。

 

 static void read() throws MalformedURLException, DocumentException
   {
		SAXReader reader = new SAXReader();
		Document document = reader.read(new File("src/student.xml"));
		//提取一个name结点
		List name = document.selectNodes("//name");
		for(Object temp: name)
		{
			System.out.println(  ((Element)temp).getText() );
		}
		
   }



你可能感兴趣的:(xpath操作xml)