首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

DOM4j学习的超笃学习笔记

2012-10-21 
DOM4j学习的超好学习笔记?可以调用?Getting Information from an Element可以通过Element类提供的方法访问

DOM4j学习的超好学习笔记

?

可以调用

?

Getting Information from an Element

可以通过Element类提供的方法访问一个XML元素中含有的信息:

MethodCommentgetQName()元素的QName对象getNamespace()元素所属的Namespace对象getNamespacePrefix()元素所属的Namespace对象的prefixgetNamespaceURI()元素所属的Namespace对象的URIgetName()元素的local namegetQualifiedName()元素的qualified namegetText()元素所含有的text内容,如果内容为空则返回一个空字符串而不是nullgetTextTrim()元素所含有的text内容,其中连续的空格被转化为单个空格,该方法不会返回nullattributeIterator()元素属性的iterator,其中每个元素都是Attribute对象attributeValue()元素的某个指定属性所含的值elementIterator()元素的子元素的iterator,其中每个元素都是Element对象element()元素的某个指定(qualified name或者local name)的子元素elementText()元素的某个指定(qualified name或者local name)的子元素中的text信息getParent元素的父元素getPath()元素的XPath表达式,其中父元素的qualified name和子元素的qualified name之间使用"/"分隔isTextOnly()是否该元素只含有text或是空元素isRootElement()是否该元素是XML树的根节点

?

要取出Element对象中某个属性的信息,可以调用attributeIterator()方法获得一个Attribute对象的iterator,然后再遍历它。也可以直接调用attributeValue()方法获得指定属性的值。该方法接受四种类型的参数:

attributeValue(QName qname):通过指定qualified name获得属性值,如果无法找到指定的属性,则返回null。attributeValue(QName qname, String defaultValue):通过指定qualified name获得属性值,如果无法找到指定的属性,则返回defaultValue。attributeValue(String name):通过指定local name获得属性值,而忽略属性的namespace,如果无法找到指定的属性,则返回null。attributeValue(String name, String defaultValue):通过指定local name获得属性值,而忽略属性的namespace,如果无法找到指定的属性,则返回defaultValue。

?

对于一个Attribute对象,可以使用它的以下方法访问其中的信息:

MethodCommentgetQName()属性的QName对象getNamespace()属性所属的Namespace对象getNamespacePrefix()属性所属的Namespace对象的prefixgetNamespaceURI()属性所属的Namespace对象的URIgetName()属性的local namegetQualifiedName()属性的qualified namegetValue()属性的值

?

Writing an XML Tree to OutputStream

Dom4j通过XMLWriter将由Document对象表示的XML树写入一个文件,并使用OutputFormat格式对象指定写入的风格和编码方法。调用OutputFormat.createPrettyPrint()方法可以获得一个默认的pretty print风格的格式对象。对OutputFormat对象调用setEncoding()方法可以指定XML文件的编码方法。

?

public void writeTo(OutputStream out, String encoding)throws UnsupportedEncodingException, IOException {    OutputFormat format = OutputFormat.createPrettyPrint();    format.setEncoding("gb2312");    XMLWriter writer = new XMLWriter(System.out,format);    writer.write(doc);    writer.flush();    return;}        

?

Creating an XML Tree

使用DocumentFactory对象创建一个空的Document对象。DocumentFactory对象由DocumentFactory.getInstance()静态方法产生。对Document对象调用addElement()方法将创建XML根节点,并将该节点返回。也可以手工创建一个Element对象并调用Document.setRootElement()方法把它设置为根节点

?

import org.dom4j.DocumentFactory;import org.dom4j.Document;import org.dom4j.Element;public class XMLSaver {        private DocumentFactory factory = null;    private Document doc = null;    private Element root = null;        public XMLSaver() {        factory = DocumentFactory.getInstance();        doc = factory.createDocument();    }        public Element generateRoot(String name) {        root = doc.addElement(name);        return root;    }        public Element generateRoot(QName qname) {        root = doc.addElement(qname);        return root;    }        public Element generateRoot(Element element) {        doc.setRootElement(element);        root = element;        return root;    }}        

?

Adding Information into an Element

Element通过addElement()为自己增加一个子节点到当前所有子节点的后面。该方法可以接受三种不同类型的参数:(QName qname)、(String name)或者(String qualifiedName, String namespaceURI)。该方法返回增加的子节点的Element对象。

Element通过addAttribute()为自己增加属性。该方法可以接受两种不同类型的参数:(QName qname, String value)或者(String name, String value)。该方法返回自身的Element对象。

Element通过addText()为自己增加文本内容。该方法只接受String类型参数,并返回自身的Element对象。

?

public void addAuthors(Element bookElement) {    Element author1 = bookElement.addElement("author");    author1.addAttribute("name","Toby");    author1.addAttribute("location","Germany");    author1.addText("Tobias Rademacher");    Element author2 = bookElement.addElement("author");    author2.addAttribute("name","James");    author2.addAttribute("name","UK");    author2.addText("James Strachan");        return;}        

?

Deleting Elements and Attributes

要删除XML树上的一棵子树,首先要找到该子树的根节点,然后对该节点调用detach()方法。注意:如果对根节点调用了detach()方法,将导致该XML树不再完整(一个XML文件需要有且仅有一个根节点)。

?

public void deleteSubtree(Element subtreeRoot) {    subtreeRoot.detach();    return;}        

?

要清除Element下的所有子节点(包括Element和text),可以对该Element调用clearContent()方法。该方法不会清除Element的属性。

要清除Element下的某个Attribute,首先要获得该Attribute对象,然后把它作为参数调用Element的remove()方法。

Updating an Attribute

要更新一个属性的内容,首先要获得该Attribute对象,然后可以调用setNamespace()方法更新它所属的namespace;调用setValue()方法更新它的属性值。

Updating an Element's Text

可以对一个Element对象调用isTextOnly()方法判断它是否只含有text或者是空节点。对Element对象调用addText()方法将把一个字符串附加到Element中,但不会修改它原来拥有的text或者子节点。如果Element是isTextOnly(),要修改原来含有的text,可以先调用clearContent(),再调用addText()并把新值传入。

?

public void updateText(Element element, String newText) {    if (element.isTextOnly()) {        element.clearContent();        element.addText(newText);    }    return;}
文章来自:http://heavyz.sourceforge.net/homepage/homepage_zh/comp/notes/dom4j.html

热点排行