dom4j解析xml实例Word格式文档下载.docx
- 文档编号:20463192
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:10
- 大小:17.24KB
dom4j解析xml实例Word格式文档下载.docx
《dom4j解析xml实例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《dom4j解析xml实例Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
journaltitle="
XMLZone"
publisher="
IBMdeveloperWorks"
articlelevel="
Intermediate"
date="
December-2001"
title>
JavaconfigurationwithXMLSchema<
/title>
author>
firstname>
Marcello<
/firstname>
lastname>
Vitaletti<
/lastname>
/author>
/article>
/journal>
/catalog>
然后使用同一个解析器修改catalog.xml,清单2是修改后的XML文档,catalog-modified.xml。
清单2.修改后的XML文档(catalog-modified.xml)
--AnXMLcatalog-->
Introductory"
October-2002"
CreateflexibleandextensibleXMLschemas<
Ayesha<
Malik<
与W3CDOMAPI相比,使用dom4j所包含的解析器的好处是dom4j拥有本地的XPath支持。
DOM解析器不支持使用XPath选择节点。
本文包括以下几个部分:
预先设置
创建文档
修改文档
预先设置
这个解析器可以从http:
//dom4j.org获取。
通过设置使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"
"
journalElement.addAttribute("
publisher"
向article元素中添加journal元素。
ElementarticleElement=journalElement.addElement("
article"
为article元素增加level和date属性。
articleElement.addAttribute("
level"
articleElement.addAttribute("
date"
向article元素中增加title元素。
ElementtitleElement=articleElement.addElement("
使用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("
null,"
file:
//c:
/Dtds/catalog.dtd"
这样就向XML文档中增加文档类型说明:
DOCTYPEcatalogSYSTEM"
如果文档要使用文档类型定义(DTD)文档验证则必须有Doctype。
XML声明<
自动添加到XML文档中。
清单3所示的例子程序XmlDom4J.java用于创建XML文档catalog.xml。
清单3.生成XML文档catalog.xml的程序(XmlDom4J.java)
importorg.dom4j.io.XMLWriter;
importjava.io.*;
publicclassXmlDom4J{
publicvoidgenerateDocument(){
Documentdocument=DocumentHelper.createDocument();
ElementcatalogElement=document.addElement("
AnXMLCatalog"
catalogElement.addProcessingInstruction("
ElementjournalElement=catalogElement.addElement("
ElementarticleElement=journalElement.addElement("
ElementtitleElement=articleElement.addElement("
titleElement.setText("
ElementauthorElement=articleElement.addElement("
ElementfirstNameElement=authorElement.addElement("
ElementlastNameElement=authorElement.addElement("
document.addDocType("
null,"
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();
while(iter.hasNext()){
Attributeattribute=(Attribute)iter.next();
if(attribute.getValue().equals("
))
attribute.setValue("
}
获取article元素列表,从article元素中的title元素得到一个迭代器,并修改title元素的文本。
list=document.selectNodes("
//article"
iter=list.iterator();
Elementelement=(Element)iter.next();
Iteratoriterator=element.elementIterator("
while(iterator.hasNext()){
ElementtitleElement=(Element)iterator.next();
if(titleElement.getText().equals("
CreateflexibleandextensibleXMLschema"
}}
通过和title元素类似的过程修改author元素。
清单4所示的示例程序Dom4JParser.java用于把catalog.xml文档修改成catalog-modified.xml文档。
清单4.用于修改catalog.xml的程序(Dom4Jparser.java)
importorg.dom4j.Attribute;
importjava.util.List;
importjava.util.Iterator;
importorg.dom4j.DocumentException;
importorg.dom4j.io.SAXReader;
publicclassDom4JParser{
publicvoidmodifyDocument(FileinputXml){
SAXReadersaxReader=newSAXReader();
Listlist=document.selectNodes("
list=document.selectNodes("
//article/@date"
JavaconfigurationwithXML
Schema"
//article/author"
ElementfirstNameElement=(Element)iterator.next();
if(firstNameElement.getText().equals("
Ayesha"
ElementlastNameElement=(Element)iterator.next();
if(lastNameElement.getText().equals("
Malik"
/catalog/catalog-modified.xml"
catch(DocumentExceptione)
{
System.out.println(e.getMessage());
catch(IOExceptione){
publicstaticvoidmain(String[]argv){
Dom4JParserdom4jParser=newDom4JParser();
dom4jParser.modifyDocument(newFile("
));
这一节说明了如何使用dom4j中的解析器修改示例XML文档。
这个解析器不使用DTD或者模式验证XML文档。
如果XML文档需要验证,可以解释用dom4j与JAXPSAX解析器。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dom4j 解析 xml 实例