XML一般都作为配置文件使用,使用Java的IO技术就可以解析不过很麻烦。
可以使用第三方的开发包来处理XML文件,下面来介绍一下。
常见的有三种方式:
1. DOM:需要将整个XML加载到内存解析成一个Document对象,可以进行增删改查操作。
缺点是如果XML文件过大,可能会出现内存溢出的现象。
2. SAX:是一种快速的方法,可以处理大文件。
缺点是只能读使用后将释放资源。
3. PULL:Android内置的XML解析方式。
常见的解析开发包:
JAXP、JDom、jsoup、dom4j(此篇文章使用这种比较常用的解析开发包,hibernate底层就采用此包)
代码如下:
package demo.xml.dom4j;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4jTest {
public static void main(String[] args) {
//获得saxreader实例
SAXReader reader = new SAXReader();
try {
//获得xml文档
Document document = reader.read("src/demo/xml/dom4j/web.xml");
//获得根元素
Element rootElement = document.getRootElement();
//根元素名称
String nodeName = rootElement.getName();
System.out.println(nodeName);
//获得根元素下所有元素的列表
List<Element> elements = rootElement.elements();
//遍历根元素下元素
for (Element element : elements) {
String childName = element.getName();
System.out.println("NodeName:"+childName);
if("servlet".equals(childName)) {
Element servletName = element.element("servlet-name");
System.out.println("servletName:"+servletName.getText());
Element servletClass = element.element("servlet-class");
System.out.println("servletName:"+servletClass.getText());
}
}
System.out.println("-----------------------------");
//获得指定元素
Element servletMapping = rootElement.element("servlet-mapping");
System.out.println(servletMapping.getName());
Element servletName = servletMapping.element("servlet-name");
System.out.println("servletName:"+servletName.getText());
Element urlPattern = servletMapping.element("url-pattern");
System.out.println("urlPattern:"+urlPattern.getText());
} catch (DocumentException e) {
e.printStackTrace();
}
}
}