




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
XML编程-第二讲CSDN陈红军XML课程大纲使用JAXP进行SAX解析DOM4j解析XML技术1.使用JAXP进行SAX解析SAX解析在使用DOM解析XML文档时,需要读取整个XML文档,在内存中构架代表整个DOM树的Doucment对象,从而再对XML文档进行操作。此种情况下,如果XML文档特别大,就会消耗计算机的大量内存,并且容易导致内存溢出。SAX解析允许在读取文档的时候,即对文档进行处理,而不必等到整个文档装载完才会文档进行操作。SAX解析SAX采用事件处理的方式解析XML文件,利用SAX解析XML文档,涉及两个部分:解析器和事件处理器:解析器可以使用JAXP的API创建,创建出SAX解析器后,就可以指定解析器去解析某个XML文档。解析器采用SAX方式在解析某个XML文档时,它只要解析到XML文档的一个组成部分,都会去调用事件处理器的一个方法,解析器在调用事件处理器的方法时,会把当前解析到的xml文件内容作为方法的参数传递给事件处理器。事件处理器由程序员编写,程序员通过事件处理器中方法的参数,就可以很轻松地得到sax解析器解析到的数据,从而可以决定如何对数据进行处理。SAX解析阅读ContentHandlerAPI文档,常用方法:startElement、endElement、charactersSAX方式解析XML文档使用SAXParserFactory创建SAX解析工厂SAXParserFactoryspf=SAXParserFactory.newInstance();通过SAX解析工厂得到解析器对象 SAXParsersp=spf.newSAXParser();通过解析器对象得到一个XML的读取器XMLReaderxmlReader=sp.getXMLReader();设置读取器的事件处理器 xmlReader.setContentHandler(newBookParserHandler());解析xml文件 xmlReader.parse("book.xml");SAX方式解析XML文档SAX解析编程解析XML技术2.DOM4JDOM4J解析XML文档Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM开发的。与JDOM不同的是,dom4j使用接口和抽象的人分离出来而后独立基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。Dom4j是一个非常优秀的JavaXMLAPI,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。使用Dom4j开发,需下载dom4j相应的jar文件。下载与安装dom4j是上的一个开源项目,主要用于对XML的解析。从2001年7月发布第一版以来,已陆续推出多个版本,目前最高版本为1.6.1。dom4j专门针对Java开发,使用起来非常简单、直观,在Java界,dom4j正迅速普及。可以到http:///projects/dom4j下载其最新版。Document对象DOM4j中,获得Document对象的方式有三种:
1.读取XML文件,获得document对象
SAXReaderreader=newSAXReader();
Document
document=reader.read(newFile("input.xml")); 2.解析XML形式的文本,得到document对象.
Stringtext="<members></members>";
Documentdocument=DocumentHelper.parseText(text); 3.主动创建document对象.
Documentdocument=DocumentHelper.createDocument();
//创建根节点
Elementroot=document.addElement("members");节点对象1.获取文档的根节点.Elementroot=document.getRootElement();2.取得某个节点的子节点. Elementelement=node.element(“书名");3.取得节点的文字
Stringtext=node.getText();节点对象4.取得某节点下所有名为“member”的子节点,并进行遍历.
Listnodes=rootElm.elements("member");
for(Iteratorit=nodes.iterator();it.hasNext();){
Elementelm=(Element)it.next();
//dosomething
}5.对某节点下的所有子节点进行遍历.
for(Iteratorit=root.elementIterator();it.hasNext();){
Elementelement=(Element)it.next();
//dosomething
}6.在某节点下添加子节点.
ElementageElm=newMemberElm.addElement("age");节点对象7.设置节点文字.
element.setText("29");8.删除某节点.
//childElm是待删除的节点,parentElm是其父节点
parentElm.remove(childElm);
9.添加一个CDATA节点.
ElementcontentElm=infoElm.addElement("content");
contentElm.addCDATA(diary.getContent());节点对象属性1.取得某节点下的某属性
Elementroot=document.getRootElement();
//属性名nameAttributeattribute=root.attribute("size");2.取得属性的文字Stringtext=attribute.getText();
3.删除某属性
Attributeattribute=root.attribute("size");
root.remove(attribute);节点对象属性3.遍历某节点的所有属性
Elementroot=document.getRootElement();
for(Iteratorit=root.attributeIterator();it.hasNext();){
Attributeattribute=(Attribute)it.next();
Stringtext=attribute.getText();
System.out.println(text);
}4.设置某节点的属性和文字.
newMemberElm.addAttribute("name","sitinspring");5.设置属性的文字
Attributeattribute=root.attribute("name");
attribute.setText("sitinspring");将文档写入XML文件.1.文档中全为英文,不设置编码,直接写入的形式.
XMLWriterwriter=newXMLWriter(newFileWriter("output.xml"));
writer.write(document);
writer.close();2.文档中含有中文,设置编码格式写入的形式.
OutputFormatformat=OutputFormat.createPrettyPrint();
//指定XML编码
format.setEncoding("GBK");
XMLWriterwriter=newXMLWriter(newFileWriter("output.xml"),format);
writer.write(document);
writer.close();Dom4j在指定位置插入节点1.得到插入位置的节点列表(list)2.调用list.add(index,elemnent),由index决定element的插入位置。Element元素可以通过DocumentHelper对象得到。示例代码:Elementaaa=DocumentHelper.createElement("aaa");aaa.setText("aaa");Listlist=root.element("书").elements();list.add(1,aaa);//更新document字符串与XML的转换1.将字符串转化为XML
Stringtext="<members><member>sitinspring</member></members>";
Documentdocument=DocumentHelper.parseText(text);2.将文档或节点的XML转化为字符串.
SAXReaderreader=newSAXReader();
Document
document=reader.read(newFile("input.xml"));
Elementroot=document.getRootElement();
StringdocXmlText=doc
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年福建事业单位考试考核要点试题及答案
- 2025至2030年流体控制系统项目投资价值分析报告
- 影视文学自考试题及答案
- 园艺师考试的题型分析试题及答案
- 利多卡因填空试题及答案
- 园艺师考试中常用的学习工具分析试题及答案
- 2024高校辅导员招聘考题总结与答案
- 进厂逻辑测试题及答案解析
- 2024年农艺师考试创新思维试题及答案
- 辅导员招聘考试的重要步骤指导试题及答案
- 宪法与银行业务
- 机电安装工程专业分包合同
- 2025-2030中国探地雷达行业发展分析及发展趋势预测与投资价值研究报告
- 《中央八项规定精神学习教育》专项讲座
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 工程管理工程项目管理模式和发展趋势课件
- 启备变教学讲解课件
- 一般检查头颈部课件
- 质保体系复习题 2
- DB11-T 3032-2022水利工程建设质量检测管理规范
- 道路标线标识检验批质量验收记录
评论
0/150
提交评论