日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件(详细)...

發(fā)布時(shí)間:2025/7/25 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件(详细)... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Dom4j是一個(gè)簡(jiǎn)單、靈活的開(kāi)放源代碼的庫(kù)。Dom4j是由早期開(kāi)發(fā)JDOM開(kāi)發(fā)的。與JDOM不同的是,dom4j使用接口和抽象的人分離出來(lái)而后獨(dú)立基類,雖然Dom4j的API相對(duì)要復(fù)雜一些,但它提供了比JDOM更好的靈活性。?

Dom4j是一個(gè)非常優(yōu)秀的Java?XML?API,具有性能優(yōu)異、功能強(qiáng)大和極易使用的特點(diǎn)?,F(xiàn)在很多軟件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。

使用Dom4j開(kāi)發(fā),需下載dom4j相應(yīng)的jar文件。

Document對(duì)象

DOM4j中,獲得Document對(duì)象的方式有三種:

1.讀取XML文件,獲得document對(duì)象????????????

???????????????????SAXReader?reader?=?new?SAXReader();
??????????????Document???document?=?reader.read(new?File("input.xml"));

2.解析XML形式的文本,得到document對(duì)象.

???????????????????String?text?=?"<members></members>";
??????????????Document?document?=?DocumentHelper.parseText(text);

3.主動(dòng)創(chuàng)建document對(duì)象.

??????????????????Document?document?=?DocumentHelper.createDocument();
?????????????//創(chuàng)建根節(jié)點(diǎn)

??????????????????Element?root?=?document.addElement("members");

節(jié)點(diǎn)對(duì)象

1.獲取文檔的根節(jié)點(diǎn).

??????Element?root?=?document.getRootElement();

2.取得某個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn).

Element?element=node.element(“書(shū)名");

3.取得節(jié)點(diǎn)的文字

??????String?text=node.getText();

4.取得某節(jié)點(diǎn)下所有名為“member”的子節(jié)點(diǎn),并進(jìn)行遍歷.
?List?nodes?=?rootElm.elements("member");
?
??for?(Iterator?it?=?nodes.iterator();?it.hasNext();)?{
?????Element?elm?=?(Element)?it.next();
????//?do?something
?}

5.對(duì)某節(jié)點(diǎn)下的所有子節(jié)點(diǎn)進(jìn)行遍歷.
????for(Iterator?it=root.elementIterator();it.hasNext();){
???????Element?element?=?(Element)?it.next();
???????//?do?something
????}

6.在某節(jié)點(diǎn)下添加子節(jié)點(diǎn).
Element?ageElm?=?newMemberElm.addElement("age");

7.設(shè)置節(jié)點(diǎn)文字.
?element.setText("29");

8.刪除某節(jié)點(diǎn).
//childElm是待刪除的節(jié)點(diǎn),parentElm是其父節(jié)點(diǎn)

????parentElm.remove(childElm);

9.添加一個(gè)CDATA節(jié)點(diǎn).
Element?contentElm?=?infoElm.addElement("content");
contentElm.addCDATA(diary.getContent());

節(jié)點(diǎn)對(duì)象屬性

1.取得某節(jié)點(diǎn)下的某屬性
????Element?root=document.getRootElement();????
????//屬性名name

?????????Attribute?attribute=root.attribute("size");

2.取得屬性的文字
????String?text=attribute.getText();

?3.刪除某屬性
?Attribute?attribute=root.attribute("size");
?root.remove(attribute);

3.遍歷某節(jié)點(diǎn)的所有屬性
???Element?root=document.getRootElement();????
???for(Iterator?it=root.attributeIterator();it.hasNext();){
?????????Attribute?attribute?=?(Attribute)?it.next();
?????????String?text=attribute.getText();
?????????System.out.println(text);
????}

4.設(shè)置某節(jié)點(diǎn)的屬性和文字.
???newMemberElm.addAttribute("name",?"sitinspring");

5.設(shè)置屬性的文字
???Attribute?attribute=root.attribute("name");
???attribute.setText("sitinspring");

將文檔寫(xiě)入XML文件.

1.文檔中全為英文,不設(shè)置編碼,直接寫(xiě)入的形式.
??XMLWriter?writer?=?new?XMLWriter(new??FileWriter("output.xml"));
??writer.write(document);
??writer.close();

2.文檔中含有中文,設(shè)置編碼格式寫(xiě)入的形式.
OutputFormat?format?=?OutputFormat.createPrettyPrint();
//?指定XML編碼???????????????????

?????format.setEncoding("GBK");???????
XMLWriter?writer?=?new?XMLWriter(newFileWriter("output.xml"),format);
writer.write(document);
writer.close();

Dom4j在指定位置插入節(jié)點(diǎn)

1.得到插入位置的節(jié)點(diǎn)列表(list)

2.調(diào)用list.add(index,elemnent),由index決定element的插入位置。

Element元素可以通過(guò)DocumentHelper對(duì)象得到。示例代碼:

Element?aaa?=?DocumentHelper.createElement("aaa");

aaa.setText("aaa");

List?list?=?root.element("書(shū)").elements();

list.add(1,?aaa);

//更新document

字符串與XML的轉(zhuǎn)換?

1.將字符串轉(zhuǎn)化為XML
?

?????String?text?=?"<members>?<member>sitinspring</member></members>";
Document?document?=?DocumentHelper.parseText(text);

2.將文檔或節(jié)點(diǎn)的XML轉(zhuǎn)化為字符串.

?????SAXReader?reader?=?new?SAXReader();
Document???document?=?reader.read(new?File("input.xml"));????????????
Element?root=document.getRootElement();????

????????????
String?docXmlText=document.asXML();

String?rootXmlText=root.asXML();
Element?memberElm=root.element("member");
String?memberXmlText=memberElm.asXML();
續(xù)寫(xiě)

dom4j是一個(gè)Java的XML API,類似于jdom,用來(lái)讀寫(xiě)XML文件的。

下載(環(huán)境配置)

DOM4J是開(kāi)源組織提供的一個(gè)免費(fèi)的、強(qiáng)大的XML解析工具,如果開(kāi)發(fā)者需要在項(xiàng)目中使用那么需要下載并引入jar包。

1. 下載DOM4J地址:http://sourceforge.net/projects/dom4j

2.?引入:dom4j-1.6.1.jar (核心包)、 jaxen-1.1-beta-6.jar(Xpath支持包)

方法

它的主要方法都在org.dom4j這個(gè)包里定義:
AttributeAttribute定義了XML的屬性
BranchBranch為能夠包含子節(jié)點(diǎn)的節(jié)點(diǎn)如XML元素(Element)和文檔(Docuemnts)定義了一個(gè)公共的行為,
CDATACDATA 定義了XML CDATA 區(qū)域
CharacterDataCharacterData是一個(gè)標(biāo)識(shí)借口,標(biāo)識(shí)基于字符的節(jié)點(diǎn)。如CDATA,Comment, Text.
CommentComment 定義了XML注釋的行為
Document定義了XML文檔
DocumentTypeDocumentType 定義XML DOCTYPE聲明
ElementElement定義XML 元素
ElementHandlerElementHandler定義了 Element 對(duì)象的處理器
ElementPath被?ElementHandler?使用,用于取得當(dāng)前正在處理的路徑層次信息
EntityEntity定義 XML entity
NodeNode為所有的dom4j中XML節(jié)點(diǎn)定義了多態(tài)行為
NodeFilterNodeFilter 定義了在dom4j節(jié)點(diǎn)中產(chǎn)生的一個(gè)濾鏡或謂詞的行為(predicate)
ProcessingInstructionProcessingInstruction 定義 XML 處理指令.
TextText 定義XML 文本節(jié)點(diǎn).
VisitorVisitor 用于實(shí)現(xiàn)Visitor模式.
XPathXPath 在分析一個(gè)字符串后會(huì)提供一個(gè)XPath 表達(dá)式

繼承關(guān)系

要想弄懂這套接口,關(guān)鍵的是要明白接口的繼承關(guān)系:
  • interface java.lang.Cloneable
    • interface org.dom4j.Node
    • interface org.dom4j.Attribute
    • interface org.dom4j.Branch
      • interface org.dom4j.Document
      • interface org.dom4j.Element
    • interface org.dom4j.CharacterData
      • interface org.dom4j.CDATA
      • interface org.dom4j.Comment
      • interface org.dom4j.Text
    • interface org.dom4j.DocumentType
    • interface org.dom4j.Entity
    • interface org.dom4j.ProcessingInstruction

主要JAVA包

Document對(duì)象

1.讀取XML文件,獲得document對(duì)象. ?

SAXReader reader = new SAXReader(); ?? Document ? document = reader.read(new File("input.xml")); ??

2.解析XML形式的文本,得到document對(duì)象. ??

String text = "<members></members>"; ?? Document document = DocumentHelper.parseText(text); ??

3.主動(dòng)創(chuàng)建document對(duì)象. ??

Document document = DocumentHelper.createDocument(); ?? Element root = document.addElement("members");// 創(chuàng)建根節(jié)點(diǎn) ??

Element節(jié)點(diǎn)

1.獲取文檔的根節(jié)點(diǎn). ??
Element rootElm = document.getRootElement(); ??
2.取得某節(jié)點(diǎn)的單個(gè)子節(jié)點(diǎn). ??

Element memberElm=root.element("member");// "member"是節(jié)點(diǎn)名 ??

3.取得節(jié)點(diǎn)的文字 ??

String text=memberElm.getText();也可以用: ??
String text=root.elementText("name");這個(gè)是取得根節(jié)點(diǎn)下的name字節(jié)點(diǎn)的文字. ??

4.取得某節(jié)點(diǎn)下名為"member"的所有字節(jié)點(diǎn)并進(jìn)行遍歷. ??

List nodes = rootElm.elements("member"); ??
for (Iterator it = nodes.iterator(); it.hasNext();) { ??
? Element elm = (Element) it.next(); ??
? // do something ??
} ??

5.對(duì)某節(jié)點(diǎn)下的所有子節(jié)點(diǎn)進(jìn)行遍歷. ??

for(Iterator it=root.elementIterator();it.hasNext();){ ??
? Element element = (Element) it.next(); ??
? ?// do something ??
} ??

6.在某節(jié)點(diǎn)下添加子節(jié)點(diǎn). ??

Element ageElm = newMemberElm.addElement("age"); ??

7.設(shè)置節(jié)點(diǎn)文字. ??

ageElm.setText("29"); ??

8.刪除某節(jié)點(diǎn). ??

parentElm.remove(childElm);// childElm是待刪除的節(jié)點(diǎn),parentElm是其父節(jié)點(diǎn) ??

9.添加一個(gè)CDATA節(jié)點(diǎn). ??

Element contentElm = infoElm.addElement("content"); ??
contentElm.addCDATA(diary.getContent()); ?

Attribute屬性

1.取得某節(jié)點(diǎn)下的某屬性 ??

Element root=document.getRootElement(); ? ? ??
Attribute attribute=root.attribute("size");// 屬性名name

2.取得屬性的文字 ??

// 也可以用
String text=attribute.getText(); ??
// ?這個(gè)是取得根節(jié)點(diǎn)下name字節(jié)點(diǎn)的屬性firstname的值: ?
String text2=root.element("name").attributeValue("firstname");

3.遍歷某節(jié)點(diǎn)的所有屬性 ? ?

Element root=document.getRootElement(); ? ? ? ?
for(Iterator it=root.attributeIterator();it.hasNext();){ ? ?
?Attribute attribute = (Attribute) it.next(); ? ?
?String text=attribute.getText(); ? ?
?System.out.println(text); ? ?
}

4.設(shè)置某節(jié)點(diǎn)的屬性和文字. ? ?

newMemberElm.addAttribute("name", "sitinspring"); ? ?

5.設(shè)置屬性的文字 ??

Attribute attribute=root.attribute("name"); ? ?
attribute.setText("sitinspring"); ? ?

6.刪除某屬性 ? ?

Attribute attribute=root.attribute("size");// 屬性名name ? ?
root.remove(attribute); ? ?

解析步驟

1. 準(zhǔn)備需要解析的xml文件linkmans.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?> <linkmans><linkman><name>jack</name><phone>18663243245</phone><email>jack@163.com</email></linkman><linkman><name>張三</name><phone>1353243247</phone><email>zs@126.com</email></linkman> </linkmans>

2. 獲取解析器

public static SAXReader getReader() {return new SAXReader(); }

3. 獲取解析對(duì)象

public static Document getDocument(File file) throws Exception {// 3.1獲取解析器SAXReader reader = getReader();// 3.2解析文檔Document doc = reader.read(file);return doc; }

4. 獲取根元素節(jié)點(diǎn)

public static void getRoot(File file) throws Exception {// 4.1獲取解析器SAXReader reader = getReader();// 4.2解析文檔Document doc = reader.read(file);// 4.3獲取根元素Element root = doc.getRootElement();System.out.println(root.getName()); }

5. 獲取指定的其他的元素

public static void getElement(File file) throws Exception {// 5.1獲取解析器SAXReader reader = getReader();// 5.2解析文檔Document doc = reader.read(file);// 5.3獲取根元素Element root = doc.getRootElement();// 5.4獲取所有的linkmanList list = root.elements("linkman");Iterator it = list.iterator();// 5.5循環(huán)遍歷節(jié)點(diǎn)while (it.hasNext()) {Element ele = (Element) it.next();System.out.println(ele.getName());}System.out.println("---------------");// 簡(jiǎn)化for (Iterator i = root.elementIterator(); i.hasNext();) {Element element = (Element) i.next();System.out.println(element.getName());}// 5.6獲取第二個(gè)linkman的名字Element linkman2 = (Element) list.get(1);String name = linkman2.element("name").getText();System.out.println(name); }

6. 添加元素

public static Document addElement(File file) throws Exception {// 6.1獲取解析器SAXReader reader = getReader();// 6.2解析文檔Document doc = reader.read(file);// 6.3獲取根元素Element root = doc.getRootElement();// 6.4創(chuàng)建新元素Element new_linkman = DocumentHelper.createElement("linkman");Element new_name = DocumentHelper.createElement("name");Element new_phone = DocumentHelper.createElement("phone");Element new_email = DocumentHelper.createElement("email");new_name.setText("焦寧波");new_phone.setText("186xxxxxxxxx");new_email.setText("jnb@itcast.cn");// 6.5建立關(guān)系new_linkman.add(new_name);new_linkman.add(new_phone);new_linkman.add(new_email);root.add(new_linkman);return doc; }

7. 修改的document需要進(jìn)行持久化的操作,因此需要提供以下的方法。

public static void writeDocument2XML(Document doc, File file) throws Exception {// 創(chuàng)建創(chuàng)建一個(gè)轉(zhuǎn)換對(duì)象XMLWriter writer = new XMLWriter(// 可以解決輸入的數(shù)據(jù)時(shí)中文的亂碼問(wèn)題new OutputStreamWriter(new FileOutputStream(file), "UTF-8"));// 將doc寫(xiě)入指定文件writer.write(doc);// 釋放資源writer.close(); }

8. 修改元素

public static Document modifyElement(File file) throws Exception {// 8.1獲取解析器SAXReader reader = getReader();// 8.2解析文檔Document doc = reader.read(file);// 8.3獲取根元素Element root = doc.getRootElement();// 8.4直接獲取第二個(gè)linkman的nameElement name = ((Element) root.elements("linkman").get(1)).element("name");name.setText("李四");return doc; }

9. 刪除元素

public static Document removeAll(File file) throws Exception {// 9.1獲取解析器SAXReader reader = getReader();// 9.2解析文檔Document doc = reader.read(file);// 9.3獲取根元素Element root = doc.getRootElement();// 9.4獲取所有的linkmanList list = root.elements("linkman");// 9.4循環(huán)斷絕關(guān)系for (Object temp: list) {// 轉(zhuǎn)型Element linkman = (Element) temp;// 斷絕關(guān)系root.remove(linkman);}return doc; }

10. 屬性的操作

public static Document optionAttribute(File file) throws Exception {// 10.1獲取解析器SAXReader reader = getReader();// 10.2解析文檔Document doc = reader.read(file);// 10.3獲取根元素Element root = doc.getRootElement();// 10.4獲取所有的linkmanList list = root.elements("linkman");// 10.4循環(huán)添加屬性int count = 0;for (Object temp: list) {// 轉(zhuǎn)型Element linkman = (Element) temp;// 添加屬性linkman.add(DocumentHelper.createAttribute(linkman, "id", "00" + (count + 1)));count++;}// 10.5獲取焦寧波的idElement linkman3 = (Element) list.get(2);String value = linkman3.attribute("id").getText();System.out.println(value);// 10.6修改屬性linkman3.attribute("id").setText("007");// 10.7刪除屬性linkman3.remove(linkman3.attribute("id"));return doc; }

11.

? ? ? Element rootElement = document.getRootElement(); //獲取文檔的根節(jié)點(diǎn)<Package>/<Package>
? ? ?Element element = rootElement.element("RequestNodes");//獲取父節(jié)點(diǎn)(RequestNodes)
? ? ?List elements = element.elements("RequestNode"); //獲取所有的 RequestNode節(jié)點(diǎn)

? ? ? Iterator it = elements.iterator();
? ? ?while (it.hasNext()) {
? ? ?Element ele = (Element) it.next();
? ? ?Element elementZipCode= ele.element("ZipCode");//獲取到每個(gè)郵編節(jié)點(diǎn)
? ? ?String text = elementZipCode.getText();//郵編得的值

}

? ?例子:xml??

?xml version="1.0" encoding="GBK"?>
<Package>
<Head>
<TransDate>2017-05-12</TransDate>
<TransTime>15:27:05</TransTime>
<TransName>PR*****</TransName>
</Head>
<RequestNodes>
<RequestNode>
<AppntName>*****</AppntName>
<ZipCode>20*****</ZipCode>
<Address>*****</Address>
<ContNo>2016051100111486</ContNo>
<CValiDate>2016-05-12</CValiDate>
<PaytoDate>2017-05-12</PaytoDate>
<InsuredName>王麗</InsuredName>
<AgentName>功夫熊貓</AgentName>
<Phone>1******838738</Phone>
<PayMode>*****</PayMode>
<HLPrem>0.00</HLPrem>
<Risks>
<Risk>
<RiskName>*********</RiskName>
<Premium>10000.00</Premium>
<SubRiskFlag>M</SubRiskFlag>
</Risk>
</Risks>
<BankCode>*****</BankCode>
<AccType>******</AccType>
<BankAccNo>***************0799</BankAccNo>
<SumPremium>1*****0.00</SumPremium>
<ComAddress>*****</ComAddress>
<NoticeNo>500*****00*****32</NoticeNo>
<PrintDate>*****-05-12</PrintDate>
</RequestNode>
</RequestNodes>
</Package>

例子

//需要解析的emplist.xml <?xml version="1.0" encoding="utf-8"?> <list>?<emp id="1">?<name>張三</name> ?<age>34</age> ?<gender>男</gender> ?<salary>3000</salary>?</emp> ?<emp id="2">?<name>李四</name> ?<age>14</age> ?<gender>女</gender> ?<salary>4000</salary>?</emp> ?<emp id="3">?<name>王五</name> ?<age>14</age> ?<gender>女</gender> ?<salary>50000</salary>?</emp> ?<emp id="4">?<name>趙六</name> ?<age>29</age> ?<gender>男</gender> ?<salary>300</salary>?</emp> ?<emp id="5">?<name>錢7</name> ?<age>53</age> ?<gender>男</gender> ?<salary>12000</salary>?</emp>? </list> /*** 該類用于表示emplist.xml文檔中的一個(gè)emp數(shù)據(jù)*/ public class Emp {private int id;private String name;private int age;private String gender;private int salary;public Emp(){}public Emp(int id, String name, int age, String gender, int salary) {super();this.id = id;this.name = name;this.age = age;this.gender = gender;this.salary = salary;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getSalary() {return salary;}public void setSalary(int salary) {this.salary = salary;}public String toString(){return ?id+","+name+","+age+","+gender+","+salary;} } /*** 使用DOM解析XML文檔*/ public class ParseXmlDemo {public static void main(String[] args) {try {/*** 解析大致步驟:* 1:創(chuàng)建SAXReader* 2:使用SAXReader解析指定的xml文檔信息,并返回對(duì)應(yīng)Document對(duì)象* ? ? ?Document對(duì)象中就包含了該XML文檔中的所有信息及結(jié)構(gòu)了。* 3:根據(jù)文檔結(jié)構(gòu)將xml描述的樹(shù)狀信息讀取到。*///1:SAXReader reader = new SAXReader();/*** 2:解析xml工作在這里就進(jìn)行完畢了*?*/Document doc = ? ?reader.read(new File("emplist.xml"));//3List<Emp> list = new ArrayList<Emp>();/*** 解析第一步,獲取根標(biāo)簽(根元素)* Document提供了一個(gè)可以獲取根元素的方法;* Element getRootElement();* Element 的每一個(gè)實(shí)例表示xml文檔中一對(duì)標(biāo)簽。這里獲取的根標(biāo)簽就相當(dāng)于是* <list>....</list>那對(duì)標(biāo)簽。*/Element root =doc.getRootElement();/*** 由于xml文檔中一個(gè)標(biāo)簽可能含有其他子標(biāo)簽* 所以Element對(duì)象提供了可以獲取其表示的標(biāo)簽中的子標(biāo)簽的方法:* List elment()* 獲取當(dāng)期標(biāo)簽下所有子標(biāo)簽,List集合中存放的是若干個(gè)Element實(shí)例,* 每個(gè)實(shí)例表示其中一個(gè)子標(biāo)簽。*?* List elements(String name)* 獲取當(dāng)前標(biāo)簽下所有同名(參數(shù)指定該名字)子標(biāo)簽*?* ?Element element(String name)* ?獲取當(dāng)前標(biāo)簽下給定名字的標(biāo)簽,若有多個(gè),獲取第一個(gè)。*/List<Element> ?elementlist = root.elements("emp");//遍歷每一個(gè)<emp>標(biāo)簽for(Element empEle: elementlist){//獲取name的值Element nameEle = empEle.element("name");/*** String getText() ?獲取當(dāng)前標(biāo)簽中間的文本(字符串)* getTextTrim() ?去空白。。*/String name =nameEle.getText();Element ageEle =empEle.element("age");int ?age = Integer.parseInt(ageEle.getText());/*** String elmentText(String name)* 獲取當(dāng)前標(biāo)簽下給定名字的子標(biāo)簽中間的文本,這個(gè)方法等同于上面獲取name中間文本的兩句代碼。*/String gender =empEle.elementText("gender");int salary=Integer.parseInt(empEle.elementText("salary"));/*** Element 還提供了可以用來(lái)獲取其描述的標(biāo)簽中的屬性信息:* Attribute attribute(String name)* 該方法可以獲取給定名字的屬性,Attribute的每一個(gè)實(shí)例都可以表示一個(gè)標(biāo)簽中的一個(gè)屬性。*/Attribute attr =empEle.attribute("id");int id =Integer.parseInt(attr.getValue());Emp emp = new Emp(id,name,age,gender,salary);list.add(emp);}System.out.println("解析完畢!");for(Emp e :list){System.out.println(e);}} catch (Exception e) {e.printStackTrace();}} }

運(yùn)行結(jié)果:

解析完畢! 1,張三,34,男,3000 2,李四,14,女,4000 3,王五,14,女,50000 4,趙六,29,男,300 5,錢7,53,男,12000

總結(jié)

1. dom4j是一個(gè)易用的、開(kāi)源的庫(kù),用于XML,XPath和XSLT。它應(yīng)用于Java平臺(tái),采用了Java集合框架并完全支持DOM,SAX和JAXP。

2. dom4j是一個(gè)非常非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強(qiáng)大和極端易用使用的特點(diǎn),同時(shí)它也是一個(gè)開(kāi)放源代碼的軟件,現(xiàn)在越來(lái)越多的Java軟件都在使用dom4j來(lái)讀寫(xiě)XML,特別值得一提的是連Sun的JAXM也在用dom4j。

?

轉(zhuǎn)載于:https://www.cnblogs.com/ysySelf/p/10186322.html

總結(jié)

以上是生活随笔為你收集整理的DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件(详细)...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。