dom Api详解

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在目前最新dom4j包下载地址:解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar.以下是相关操作:一.Document对象相关1.读取XML文件,获得document对象.SAXReaderreader=newSAXReader();Documentdocument=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.获取文档的根节点.ElementrootElm=document.getRootElement();2.取得某节点的单个子节点.ElementmemberElm=root.element(member);//member是节点名3.取得节点的文字Stringtext=memberElm.getText();也可以用:Stringtext=root.elementText(name);这个是取得根节点下的name字节点的文字.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.设置节点文字.ageElm.setText(29);8.删除某节点.parentElm.remove(childElm);//childElm是待删除的节点,parentElm是其父节点三.属性相关.1.取得某节点下的某属性Elementroot=document.getRootElement();Attributeattribute=root.attribute(size);//属性名name2.取得属性的文字Stringtext=attribute.getText();也可以用:Stringtext2=root.element(name).attributeValue(firstname);这个是取得根节点下name字节点的属性firstname的值.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);6.删除某属性Attributeattribute=root.attribute(size);//属性名nameroot.remove(attribute);四.将文档写入XML文件.1.文档中全为英文,不设置编码,直接写入的形式.XMLWriterwriter=newXMLWriter(newFileWriter(output.xml));writer.write(document);writer.close();2.文档中含有中文,设置编码格式写入的形式.OutputFormatformat=OutputFormat.createPrettyPrint();format.setEncoding(GBK);//指定XML编码XMLWriterwriter=newXMLWriter(newFileWriter(output.xml),format);writer.write(document);writer.close();五.字符串与XML的转换1.将字符串转化为XMLStringtext=membersmembersitinspring/member/members;Documentdocument=DocumentHelper.parseText(text);2.将文档或节点的XML转化为字符串.SAXReaderreader=newSAXReader();Documentdocument=reader.read(newFile(input.xml));Elementroot=document.getRootElement();StringdocXmlText=document.asXML();StringrootXmlText=root.asXML();ElementmemberElm=root.element(member);StringmemberXmlText=memberElm.asXML();六.使用XPath快速找到节点.读取的XML文档示例?xmlversion=1.0encoding=UTF-8?projectDescriptionnameMemberManagement/namecomment/commentprojectsprojectPRJ1/projectprojectPRJ2/projectprojectPRJ3/projectprojectPRJ4/project/projectsbuildSpecbuildCommandnameorg.eclipse.jdt.core.javabuilder/namearguments/arguments/buildCommand/buildSpecnaturesnatureorg.eclipse.jdt.core.javanature/nature/natures/projectDescription使用XPath快速找到节点project.publicstaticvoidmain(String[]args){SAXReaderreader=newSAXReader();try{Documentdoc=reader.read(newFile(sample.xml));Listprojects=doc.selectNodes(/projectDescription/projects/project);Iteratorit=projects.iterator();while(it.hasNext()){Elementelm=(Element)it.next();System.out.println(elm.getText());}}catch(Exceptionex){ex.printStackTrace();}}1、DOM4J简介DOM4J是dom4j.org出品的一个开源XML解析包。DOM4J应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。DOM4J使用起来非常简单。只要你了解基本的XML-DOM模型,就能使用。Dom:把整个文档作为一个对象。DOM4J最大的特色是使用大量的接口。它的主要接口都在org.dom4j里面定义:Attribute定义了XML的属性。Branch指能够包含子节点的节点。如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为CDATA定义了XMLCDATA区域CharacterData是一个标识接口,标识基于字符的节点。如CDATA,Comment,Text.Comment定义了XML注释的行为Document定义了XML文档DocumentType定义XMLDOCTYPE声明Element定义XML元素ElementHandler定义了Element对象的处理器ElementPath被ElementHandler使用,用于取得当前正在处理的路径层次信息Entity定义XMLentityNode为dom4j中所有的XML节点定义了多态行为NodeFilter定义了在dom4j节点中产生的一个滤镜或谓词的行为(predicate)ProcessingInstruction定义XML处理指令Text定义XML文本节点Visitor用于实现Visitor模式XPath在分析一个字符串后会提供一个XPath表达式接口之间的继承关系如下:interfacejava.lang.Cloneableinterfaceorg.dom4j.Nodeinterfaceorg.dom4j.Attributeinterfaceorg.dom4j.Branchinterfaceorg.dom4j.Documentinterfaceorg.dom4j.Elementinterfaceorg.dom4j.CharacterDatainterfaceorg.dom4j.CDATAinterfaceorg.dom4j.Commentinterfaceorg.dom4j.Textinterfaceorg.dom4j.DocumentTypeinterfaceorg.dom4j.Entityinterfaceorg.dom4j.ProcessingInstruction2、XML文档操作12.1、读取XML文档:读写XML文档主要依赖于org.dom4j.io包,有DOMReader和SAXReader两种方式。因为利用了相同的接口,它们的调用方式是一样的。publicstaticDocumentload(Stringfilename){Documentdocument=null;try{SAXReadersaxReader=newSAXReader();document=saxReader.read(newFile(filename));//读取XML文件,获得document对象}catch(Exceptionex){ex.printStackTrace();}returndocument;}或publicstaticDocumentload(URLurl){Documentdocument=null;try{SAXReadersaxReader=newSAXReader();document=saxReader.read(url);//读取XML文件,获得document对象}catch(Exceptionex){ex.printStackTrace();}returndocument;}//读取指定的xml文件之后返回一个Document对象,这个

1 / 19
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功