最近在做xml文件的解析,需要获取其中某些节点或某些属性,一开始用循环来做,显得很蠢,后来了解到dom4j,以及xpath,代码可读性显著增强。
首先取得xml文件的根结点
SAXReader reader = new SAXReader();
File file = new File("books.xml");
Document document = reader.read(file);
Element root = document.getRootElement();
重点说明xpath用法
String xpath1 = "node/node/node[@name='xiaoming']";
String xpath2 = "following-sibling::*[1]";
String xpath3 = "//node/node[@name='xiaohong'];
List<Node> nodeList1 = root.selectNodes(xpath1);
Node node = root.selectSingleNode(xpath2);
List<Node> nodeList2 = root.selectNodes(xpath3);
nodeList1是root节点下的所有符合 node节点下node节点下的符合name属性=xiaoming的所有node节点
nodeList2是整个文档中所有符合 node节点下的符合name属性=xiaohong的所有node节点
node是root节点下的第一个兄弟节点(索引从1开始),如果没有则为null
获取到节点之后就可以进行获取节点属性之类的操作了