Dom4j 、 XPath

使用Dom4j ,需要的jar文件:dom4j-1.6.1.jar 、  如果要使用到Xpath 就要加入jaxen-1.1.4.jar


第一步要先得到Document对象 



File file = new File(filename);
SAXReader reader = new SAXReader();
Document document = reader.read(file);
    


第二步,得到root节点, 因为要得到一个Document对象下面的任何元素都是要先得到root节点

            Element rootElement =   document.getRootElement();


主要方法:

 rootElement.elementIterator();   得到root节点下面所有的子节点(不包括孙节点)

         rootElement.elementIterator(elementName);  从root节点下面 根据节点名 查找指定子节点(只能找到root节点的子节点,不能找到孙节点)

 最重要的Xpath

        List lsit = document.selectNodes(regex);     //regex为搜寻表达式

       例如:以一个struts.xml文件为例:

当regex = "//struts"   得到的list 就是根节点对象 并且list的长度为0 ,因为struts节点只会有一个

        当regex  = "//struts/package/@name"   这样就是查找struts节点下面package节点下面的name属性,这样查找的list集合里面的元素都是org.dom4j.Attribute类型。强转后就可以使用Attribute类的方法了。

      搜寻表达式就是以双斜线// 开头 ,再加上节点名  如果是搜寻节点下的属性再加一个斜线/  再加上@ 符号 在加属性名


使用jdk  java.xml 包中的工具,进行xpath搜索

	@Test
	public void test01() throws Exception{
		InputStream is = Test02.class.getClassLoader().getResourceAsStream("pom.xml");
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
		DocumentBuilder builder = factory.newDocumentBuilder() ;
		Document doc = builder.parse(is) ;
		XPath xpath = XPathFactory.newInstance().newXPath() ;
		NodeList nl = (NodeList)xpath.evaluate("//build/plugins/plugin/artifactId[@test='1']"
				, doc , XPathConstants.NODESET) ;
		System.out.println("length:" + nl.getLength());
		for (int i = 0; i < nl.getLength(); i++) {
			String content = nl.item(i).getTextContent();
			System.out.println(content);
		}
		
	}


你可能感兴趣的:(list,struts,jar,File,regex)