四.XML文档的解析
dom4j组件另一个比较重要的功能就是解析XML文档,通过该组件可以很方便地解析XML文档
1.构建XML文档对象
在获取XML文档对象时,首先要创建SAXReader对象(SAXReader 类属于 org.dom4j.io),然后调用该对象的read()方法获取对应XML文档对象。public Documentread(File file) throws DocumentException
file:指定要解析的XML文件
String fileURL = request.getRealPath("/xml/p.xml"); SAXReader reader = new SAXReader(); //实例化SAXReader对象 Document doc = reader.read(new File(fileURL));//获取XML文件对应的XML文档对象
2.获取根节点
a.element()方法
element()方法用于获取指定名称的第一个节点(通常用于获取根节点中节点名唯一的一个子节点)public Elementelement(String name)
name:指定要获取的节点的名。返回值:Element对象。
b.elements()方法
elements()方法用于获取指定名称的全部节点(通常用于获取根节点中多个并列的具有相同名称的子节点)public Listelements(String name)
name:用于指定要获取的节点名返回值:List 集合
3.修改节点
在修改XML文档的节点前,首先需要查询到该节点,在 dom4j组件中,查询节点可以应用 Element 对象的(从org.dom4j.Node接口继承)两个方法来实现a.selectSingleNode()方法
public NodeselectSingleNode(String xpathExpression)
xpathExpression:XPath 表达式。
- XPath表达式使用反斜杠“\”隔开节点树的父子节点,从而构成代表节点位置的路径。
- 如果表达式以反斜杠“\”开头,则表示使用的是绝对路径,否则表示使用的是相对路径。
- 如果使用属性,那么必须在属性名前面加上“@”符号。
//例如:利用该方法获取XML文档的根节点p的ID属性值为1的子节点 org.dom4j.Node item = p.selectSingleNode("/p/info[@id='1']");
4.删除节点
在需要删除节点时,同样需要查询到要删除的节点。先获取到要删除的节点后,就可以利用Element对象的remove()方法删除该节点public booleanremove(Element element)
element:Element对象返回值:true/false
//例如:要删除的XML文档的根节点p的ID属性值为1的子节点info的代如下 Element i = (Element)p.selectSingleNode("/p/info[@id='1']"); if(null!=i){//非空判断 p.remove(i);//删除指定节点 }
批量删除指定子节点doc.getRootElement().elements("info").clear();