1.什么叫xml解析?
xml解析可以简单的理解为对xml文档里面的内容进行获取。当我们把数据存入xml文件里面以后,我们就希望通过程序获得xml的内容,我们可以运用java里面的IO知识是可以完成的,不过你需要非常繁琐的操作才能完成,并且会遇到不同的问题。为了解决这些问题,提供了不同的解析方式,并提交对那个的解析器,方便人员操作xml。
2.xml的解析方式
(1)DOM解析:将文档一次性加载到内存形成树形结构,进行解析。
优点:方便对树形结构进行操作,可以增删改操作。
缺点:若文档过大,容易导致内存溢出
(2)SAX解析:Simple Api for Xml 事件驱动的方式,边读边解析。
优点:如果文档过大,不会导致内存溢出。
缺点:不能进行增删改操作。
(3)PULL解析:Android内置的XML解析方式,类似SAX。
解析方式只有这三种!!!!!!!!!!!!
3.xml常见的解析开发包
现在最常用dom4j对xml进行解析。
在使用dom4j的jar包之前,要先引入该第三方jar包,教程请看下面链接:
https://blog.csdn.net/weixin_41531181/article/details/97649830
dom4j解析实例:
/*这是一个利用dom4j解析web.xml文件的方法。*/
@Test
public void testReadWebXml() {
try {
//1.获取解析器
SAXReader saxReader=new SAXReader();
//2.获取document文档对象
Document doc= saxReader.read("src/itheima/xml/schema/web.xml");
//3.获取根元素
Element rootElement = doc.getRootElement();
//System.out.println(rootElement.getName());
//4.获取根元素的子元素
List<Element> childElements = rootElement.elements();
//5.遍历子元素
for (Element element : childElements) {
//6.判断元素名称为servlet的元素
if("servlet".equals(element.getName())) {
//7.获取servlet-name元素
Element servletName = element.element("servlet-name");
//7.获取servlet-class元素
Element servletClass = element.element("servlet-class");
System.out.println(servletName.getText());
}
}
} catch (DocumentException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}