您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 电气安装工程 > dom4j解析xml实例
使用dom4j解析XML使用domj4API创建与修改XML文档简介:dom4j是一种解析XML文档的开放源代码XML框架。本文介绍如何使用包含在dom4j中的解析器创建并修改XML文档。dom4jAPI包含一个解析XML文档的工具。本文中将使用这个解析器创建一个示例XML文档。清单1显示了这个示例XML文档,catalog.xml。清单1.示例XML文档(catalog.xml)?xmlversion=1.0encoding=UTF-8?catalog!--AnXMLCatalog--?targetinstruction?journaltitle=XMLZonepublisher=IBMdeveloperWorksarticlelevel=Intermediatedate=December-2001titleJavaconfigurationwithXMLSchema/titleauthorfirstnameMarcello/firstnamelastnameVitaletti/lastname/author/article/journal/catalog然后使用同一个解析器修改catalog.xml,清单2是修改后的XML文档,catalog-modified.xml。清单2.修改后的XML文档(catalog-modified.xml)?xmlversion=1.0encoding=UTF-8?catalog!--AnXMLcatalog--?targetinstruction?journaltitle=XMLZonepublisher=IBMdeveloperWorksarticlelevel=Introductorydate=October-2002titleCreateflexibleandextensibleXMLschemas/titleauthorfirstnameAyesha/firstnamelastnameMalik/lastname/author/article/journal/catalog与W3CDOMAPI相比,使用dom4j所包含的解析器的好处是dom4j拥有本地的XPath支持。DOM解析器不支持使用XPath选择节点。本文包括以下几个部分:预先设置创建文档修改文档预先设置这个解析器可以从获取。通过设置使dom4j-1.4/dom4j-full.jar能够在classpath中访问,该文件中包括dom4j类、XPath引擎以及SAX和DOM接口。如果已经使用了JAXP解析器中包含的SAX和DOM接口,向classpath中增加dom4j-1.4/dom4j.jar。dom4j.jar包括dom4j类和XPath引擎,但是不含SAX与DOM接口。--------------------------------------------------------------------------------回页首创建文档本节讨论使用dom4jAPI创建XML文档的过程,并创建示例XML文档catalog.xml。使用import语句导入dom4jAPI类:importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;使用DocumentHelper类创建一个文档实例。DocumentHelper是生成XML文档节点的dom4jAPI工厂类。Documentdocument=DocumentHelper.createDocument();使用addElement()方法创建根元素catalog。addElement()用于向XML文档中增加元素。ElementcatalogElement=document.addElement(catalog);在catalog元素中使用addComment()方法添加注释“AnXMLcatalog”。catalogElement.addComment(AnXMLcatalog);在catalog元素中使用addProcessingInstruction()方法增加一个处理指令。catalogElement.addProcessingInstruction(target,text);在catalog元素中使用addElement()方法增加journal元素。ElementjournalElement=catalogElement.addElement(journal);使用addAttribute()方法向journal元素添加title和publisher属性。journalElement.addAttribute(title,XMLZone);journalElement.addAttribute(publisher,IBMdeveloperWorks);向article元素中添加journal元素。ElementarticleElement=journalElement.addElement(article);为article元素增加level和date属性。articleElement.addAttribute(level,Intermediate);articleElement.addAttribute(date,December-2001);向article元素中增加title元素。ElementtitleElement=articleElement.addElement(title);使用setText()方法设置article元素的文本。titleElement.setText(JavaconfigurationwithXMLSchema);在article元素中增加author元素。ElementauthorElement=articleElement.addElement(author);在author元素中增加firstname元素并设置该元素的文本。ElementfirstNameElement=authorElement.addElement(firstname);firstNameElement.setText(Marcello);在author元素中增加lastname元素并设置该元素的文本。ElementlastNameElement=authorElement.addElement(lastname);lastNameElement.setText(Vitaletti);可以使用addDocType()方法添加文档类型说明。document.addDocType(catalog,null,file://c:/Dtds/catalog.dtd);这样就向XML文档中增加文档类型说明:!DOCTYPEcatalogSYSTEMfile://c:/Dtds/catalog.dtd如果文档要使用文档类型定义(DTD)文档验证则必须有Doctype。XML声明?xmlversion=1.0encoding=UTF-8?自动添加到XML文档中。清单3所示的例子程序XmlDom4J.java用于创建XML文档catalog.xml。清单3.生成XML文档catalog.xml的程序(XmlDom4J.java)importorg.dom4j.Document;importorg.dom4j.DocumentHelper;importorg.dom4j.Element;importorg.dom4j.io.XMLWriter;importjava.io.*;publicclassXmlDom4J{publicvoidgenerateDocument(){Documentdocument=DocumentHelper.createDocument();ElementcatalogElement=document.addElement(catalog);catalogElement.addComment(AnXMLCatalog);catalogElement.addProcessingInstruction(target,text);ElementjournalElement=catalogElement.addElement(journal);journalElement.addAttribute(title,XMLZone);journalElement.addAttribute(publisher,IBMdeveloperWorks);ElementarticleElement=journalElement.addElement(article);articleElement.addAttribute(level,Intermediate);articleElement.addAttribute(date,December-2001);ElementtitleElement=articleElement.addElement(title);titleElement.setText(JavaconfigurationwithXMLSchema);ElementauthorElement=articleElement.addElement(author);ElementfirstNameElement=authorElement.addElement(firstname);firstNameElement.setText(Marcello);ElementlastNameElement=authorElement.addElement(lastname);lastNameElement.setText(Vitaletti);document.addDocType(catalog,null,file://c:/Dtds/catalog.dtd);try{XMLWriteroutput=newXMLWriter(newFileWriter(newFile(c:/catalog/catalog.xml)));output.write(document);output.close();}catch(IOExceptione){System.out.println(e.getMessage());}}publicstaticvoidmain(String[]argv){XmlDom4Jdom4j=newXmlDom4J();dom4j.generateDocument();}}这一节讨论了创建XML文档的过程,下一节将介绍使用dom4jAPI修改这里创建的XML文档。--------------------------------------------------------------------------------回页首修改文档这一节说明如何使用dom4jAPI修改示例XML文档catalog.xml。使用SAXReader解析XML文档catalog.xml:SAXReadersaxReader=newSAXReader();Documentdocument=saxReader.read(inputXml);SAXReader包含在org.dom4j.io包中。inputXml是从c:/catalog/catalog.xml创建的java.io.File。使用XPath表达式从article元素中获得level节点列表。如果level属性值是“Intermediate”则改为“Introductory”。Listlist=document.selectNodes(//article/@level);Iteratoriter=list.iterator();w
本文标题:dom4j解析xml实例
链接地址:https://www.777doc.com/doc-3867518 .html