关键词不能为空

当前您在: 主页 > 英语 >

dom4j api 详解

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-28 05:06
tags:

-

2021年2月28日发(作者:纵横线)



1



DOM4J


简介



DOM4J




出品的一个开源


XML


解析包。< /p>


DOM4J


应用于


Java


平台,


采用了


Java


集合


框架并完全支持


DOM



SAX



JAXP




DOM4J


使用起来非常简单。只要你了解基本的


XML-DOM


模型,就能使用。



Dom


:把整个文档作为一个对象。



DOM4J


最大的特色是使用大量的接口。它的主要接口都在


4j


里面定义:



Attribute



Branch



CDATA



CharacterData



Comment



Document



DocumentType



Element



ElementHandler



ElementPath



Entity



Node



NodeFilter



ProcessingInstruction



Text



Visitor



XPath



接口之间的继承关系如下:



interface ble



interface 4j.


Node



interface ute



interface



interface nt



interface t



interface terData



interface



interface t



interface



interface ntType



定义了


XML


的属性。



指能够包含子节点的节点。 如


XML


元素


(Element)


和文档


(Docuemnts)


定义了一个 公共的行为



定义了


XML CDATA


区域



是一个标识接口, 标识基于字符的节点。如


CDATA



Comment, Text.



定义了


XML


注释的行为



定义了


XML


文档



定义


XML DOCTYPE


声明



定义


XML


元素



定义了


Element


对象的处理器




ElementHandler


使用,用于取得当前正在处理的路径层次信息



定义


XML entity




dom4j


中所有的


XML


节点定义了多态行为



定义了在


dom4j


节点中产生的一 个滤镜或谓词的行为(


predicate


< br>


定义


XML


处理指令



定义


XML


文本节点



用于实现


Visitor


模式



在分析一个字符串后会提供一个


XPath


表达式



interface



interface singInstruction



2< /p>



XML


文档操作


1



2.1


、读取

< br>XML


文档:




读写


XML


文档主要依赖于



包,有


DOMReader



SAXReader


两种方式。因为利用


了相同的接口,它们的调用方式是一样的。



public static Document load(String filename) {



Document document = null;



try {



SAXReader saxReader = new SAXReader();



document = saxReader


.


read


(new File(filename)); //


读取


XML


文件


,


获得


document


对象


} catch (Exception ex) {



tackTrace();



}



return document;



}





public static Document load(URL url) {



Document document = null;



try {



SAXReader saxReader = new SAXReader();



document = saxReader


.


read


(url); //


读取

< br>XML


文件


,


获得


document


对象



} catch (Exception ex) {



tackTrace();



}



return document;



}


< p>
//


读取指定的


xml


文 件之后返回一个


Document


对象,这个对象代表了整个< /p>


XML


文档,用于各种


Dom

< p>
运算。执照


XML


文件头所定义的编码来转换。< /p>



2.2


、获取根节点



根节点是


xml


分析的开始,任何

xml


分析工作都需要从根开始



Xml xml = new Xml();



Document dom = xml.


load


(path +



Element root = dom.


getRootEl ement


();



2.3



.


新增一个节点以及其下的子节点与数据



Element menuElement = ment(



Element engNameElement = ment(




ext(catNameEn);



Element chiNameElement = ment(



t(catName);



2.4




写 入


XML


文件



注意文件操作的包装类


是乱码的根源



public static boolean doc2XmlFile(Document document, String filename) {


boolean flag = true;


try {


XMLWriter writer = new XMLWriter( new OutputStreamWriter(new FileOutputStream(filen

< p>
ame),


(document);


();


} catch (Exception ex) {


flag = false;


tackTrace();


}


n(flag);


return flag;


}



Dom 4j


通过


XMLWriter



Document


对象表示的


XML


树写入指定的文件,并使用


OutputFormat

< br>格式对象指定写入的风格和编码方法。


调用


Pretty Print()


方法可以获得一个默认的


pretty pri nt


风格的格式对象。对


OutputFormat

< p>
对象调用


setEncoding()


方法可以指 定


XML


文件的编码方法。




public void writeTo(OutputStream out, String encoding) throws UnsupportedEncodingExc


eption, IOException {


OutputFormat format = PrettyPrint();


oding(


XMLWriter writer = new XMLWriter(,format);


(doc);


();


return;


}


2. 5


、遍历

< br>xml


节点



< /p>



Document


对象调用

< p>
getRootElement()


方法可以返回代表根节点的

< p>
Element


对象。拥有了一



Element


对象后,


可以对该对象调用

< p>
elementIterator()


方法获得它的子节点的


Element


对象们的一


个迭代器。使用


(Element)iterator


.next()

< br>方法遍历一个


iterator


并把每个取出的元素转化 为


Element


类型。



public boolean isOnly(String catNameEn,HttpServletRequest request,String xml) {


boolean flag = true;


String path = lPath(


Document doc = load(path+


Element root = tElement();


for (Iterator i = tIterator(); t();) {


Element el = (Element) ();


if((tTextTrim(


flag = false;


break;


}


}


return flag;


}


2. 6


、创建


xml


文件

< br>


public static void main(String args[]){



String fileName=



Document document= DocumentHelper


.


createDocumen t


();//


建立


document< /p>


对象,用来操作


xml


文件



Element booksElement=document.


addElement


(


建立根节点



booksElement.


addComm ent


(


加入一行注释



Element bookElement=booksElement.


addElement


(


添加一个

< br>book


节点



bookEle ment.


addAttribute


(


添加属性内容



Element titleElement =bookElement.


addElement


(


添加文本节点



titleElement.< /p>


setText


(


添加文本内容



try{



XMLWriter writer=new XMLWriter(new FileWriter(new File(fileName)));



writer


.write(document);



writer


.close();



}catch(Exception e){



tackTrace();



}



}



2.7


、修改节点属性



public



static



void


modifyXMLFile() {



String oldStr =



String newStr =



Document document =


null


;



//


修改节点的


属性



try


{



SAXReader saxReader =


new


SAXReader(); //

< br>用来读取


xml


文档



document = saxReader


.read(


new


File(oldStr)); //

< br>读取


xml


文档



List list = Nodes(


xpath


查找节点


book


的属 性



Iterator iter = or();



while


(iter


.hasNext()) {



Attribute attribute = (Attribute) iter


.next();



if


(ue().equals(



ue(



}



}


catch


(Exception e) {



tackTrace();



}



//


修改节点的


内容



try


{



SAXReader saxReader =


new


SAXReader(); //

< br>用来读取


xml


文档



document = saxReader


.read(


new


File(oldStr)); //

< br>读取


xml


文档



List list = Nodes(


xpath


查找节点


book


的内 容



Iterator iter = or();



while


(iter


.hasNext()) {



Element element = (Element) iter


.next();



t(


设置相应的内容



}



}


catch


(Exception e) {



tackTrace();



}





try


{



XMLWriter writer =


new


XMLWriter(


new


FileWriter(


new


File(newStr)));



writer


.write(document);



writer


.close();



}


catch


(Exception ex) {



tackTrace();



}



}



2.8


、删除节点



public



static



void


removeNode() {


-


-


-


-


-


-


-


-



本文更新与2021-02-28 05:06,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/678731.html

dom4j api 详解的相关文章