dom4j 解析xml
源码:http://download.csdn.net/detail/ht_00001/9520367
需要的jar包:dom4j-1.6.1.jar 和 jaxen-1.1.6.jar
导入文件:
SAXReader reader = new SAXReader();
return reader.read(new File(path));
// 获取跟节点
Element rootElement = document.getRootElement();
// 获取节点名称
String name = rootElement.getName();
// 获取所有的子元素
List<Element> elments = rootElement.elements();
// 获取所有的节点名为note的子元素
List<Element> noteElments = rootElement.elements("note");
// 获取第一个节点名为note的子节点
Element element = rootElement.element("note");
// 获取节点的属性值
String attr = element.attributeValue("id");
// 获取节点的所有属性
List<Attribute> attrList = element.attributes();
dom4j对xpath的支持
不含命名空间的xml解析
String xpath;
xpath = "//*/*[@id]"; // 当前节点下获取所有包含id 属性的节点
xpath = "//*/*[@id = 'from1']"; // 当前节点下获取所有包含id = from1 的节点
xpath ="//*/note"; // 当前节点下查询所有的note节点
xpath = "/notes/note[1]"; //查询notes下面的的地2个note节点 从1开始计数
xpath ="/notes/note[last()]"; //获取notes下的最后一个节点
List note = rootElement.selectNodes(xpath);
包含命名空间的xml解析
String xpath;
xpath = "//*/*[@id]"; // 获取所有包含id 属性的节点
xpath = "//*/*[@id = 'from1']"; // 获取所有包含id = from1 的节点
Map map = new HashMap();
map.put("c", "http://www.w3school.com.cn");
map.put("b", "http://www.w3.org/2001/XMLSchema-instance");
xpath = "//*/c:note"; //所有包含 note的节点(命名空间为:http://www.w3school.com.cn)
//节点名称实际为 :命名空间:节点名
xpath = "/c:notes/c:note"; //查询notes下面的所有note节点
xpath = "//*/b:from"; //获取xsi命名空间下的from节点
XPath test = rootElement.createXPath(xpath);
test.setNamespaceURIs(map);
List note = test.selectNodes(rootElement);