欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用DOM4J和XPath两种方式分别解析XML

程序员文章站 2022-05-28 21:03:51
...

使用DOM4J和XPath两种方式分别解析XML

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;
import org.junit.Test;

public class Teste {

//Dom4j解析XML
@Test
public void test1() throws DocumentException{
	//创建reder
	SAXReader reader=new SAXReader();
	//得到xml文件docment
	Document docment =reader.read("src/MyXml.xml");
	//得到xml的根节点
	Element root =docment.getRootElement();
	//取出标记为books的节点bookNode

// Element bookNode=root.element(“books”);
//输出booKNode节点名
// System.out.println(bookNode.getName());
//将根节点root中的每个节点放入list集合中
List list=root.elements();
//取出root的第二个子节点secondBook
Element secondBook = (Element)list.get(1);
//取出secondBook节点的下子节点标记bookname,并取出它的内容,输出
String name=secondBook.element(“bookname”).getText();
System.out.println(name);

}


@Test
public void test2() throws DocumentException{
	//创建reder
	SAXReader reader=new SAXReader();
	//得到xml文件docment
	Document docment =reader.read("src/MyXml.xml");
	//得到xml的根节点
	Element root =docment.getRootElement();
	//将root放入方法treeWake中
	treeWake(root);
}


private void treeWake(Element ele) {
	//使用递归输出每个节点的名
	System.out.println(ele.getName());
	for(int i=0;i<ele.nodeCount();i++){
		//循环取出每个节点的标记
		Node node=ele.node(i);
		//如果标记的类型是Element
		if(node instanceof Element){
			//将这个节点放入treeWake这个方法中,递归
			treeWake((Element)node);
			
		}
		
	}
	
}
//XPath解析XML
@Test
public void test3 () throws DocumentException{
	//创建read
	SAXReader read=new SAXReader();
	//得到xml文件doument
	Document doument=read.read("src/MyXml.xml");
	//得到目录下/bookstar/books[1]/bookname的节点
	Node node=doument.selectSingleNode("/bookstar/books[1]/bookname");
	//将这个节点node输出其中的内容
	System.out.println(node.getText());
}

@Test
public void Test4() throws DocumentException{
	//创建read
	SAXReader read=new SAXReader();
	//得到xml文件doument
	Document doument=read.read("src/MyXml.xml");
	//将的得到doument所有的节点,存到list中
	List list=doument.selectNodes("//*");
	for(int i=0;i<list.size();i++){
		//循环遍历出每个节点
		Node node=(Node)list.get(i);
		//并将所有节点的内容输出
		System.out.println(node.getName());
		
	}
}

}

相关标签: xml java dom