admin 管理员组文章数量: 887029
xml的两种解析方式:sax,dom4j
两种解析方式的优缺点:sax解析:优点:不需要读取整个文件,并且将其储存在内从中,不耗费内存资源,才用触发监听的方式,文件读到哪里触发相应方法。
缺点:不能反复调用,每次解析时都要从头解析,只能进行查询
dom4j:优点:只需解析一次,即可反复调用。能够进行增删改查。
缺点:必须先整体的解析一次,拿到Document对象,才能进行操作.耗费内存资源
市面上利用Sax解析较多,因为大部分的需求都只是进行查询。
sax解析
1,创建一个sax解析器工厂 : SAXParserFactory factory=SAXParserFactory.newInstance( );
2,生成一个sax解析器: SAXParser parser=factory.newSAXParser( );
3,获取一个解析器: XMLReader reader=parser.getXmlReader();
4,注册监听器: reader.setContentHandler( new MyContentHandler());
MyContentHandle为我们自己所写的继承类。它实现ContentHandle接口,或继承DefaultHandle来重现其中的方法实现相应的功能
5,解析XML:reader.parse("book.xml");
dom4j解析
dom4j不是有sun公司退出的解析方式,但其用法简单很被推广,使用其解析方式时需要导入dom4j包。
1,或许解析器:SAXReader reader=new SAXReader();
2,利用解析器读取此文件:Document document=reader.read("book.xml");
3,获取其根节点:Element root=document.getRootElement();
4,查询标签的内容:Element book=root.element("书名");
5,添加某一节点:(1)生成一个新的节点 Docoument d=Document.createElement("特价");
(2)找到需要添加到哪一个节点之下:Element book=root.element("书");
(3)添加到书节点上:book.add(d);
6,删除某一件点:(1)找到删除的某一节点:Document d=root.element("书").element("特价");
(2)找到其父节点并从父节点上删除此需要删除的节点:d.getPareat().remove(d);
7,为某一节点添加属性:(1)找到需要添加属性的节点:Element book=root.element("书");
(2)在此节点上添加属性:book.addAttribute("出版社"," **出啊版设");
8,删除节点属性和删除节点类似,都是找到属性,通过属性的父类删除这个属性。
9,在进行增删改时,以上的操作只是对内存中的Document进行更改,并没有写到xml中的。
10,更行XML文件:(1)XMLWriter writer = new XMLWriter(new FileOutputStream("book.xml"),OutputFormat.createPrettyPrint());OutputFormat.createPrettyPrint()能够使写进XML时有一个好的格式
(2)writer.write(dom);
(3)writer.close();
本文标签: xml的两种解析方式sax DOM4j
版权声明:本文标题:xml的两种解析方式:sax,dom4j 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1693563842h229483.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论