第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

第四章DOM4J的應用最后一小節(jié)里的作業(yè),我用switch來替代之前JDOM4J的if-else語句保存子節(jié)點的內(nèi)容時,為什么會出現(xiàn)保存下來的兩本書都是同樣的內(nèi)容?而且內(nèi)容和節(jié)點名不一致。

package?Dom4j;

import?java.awt.List;
import?java.io.File;
import?java.util.ArrayList;
import?java.util.Iterator;

import?javax.lang.model.element.Element;

import?org.dom4j.Attribute;
import?org.dom4j.DocumentException;
import?org.dom4j.io.SAXReader;
import?org.w3c.dom.Document;

import?com.imooc.entity.Book;

public?class?DOM4JTest?{
	private?static?ArrayList<Book>?bookList?=?new?ArrayList<Book>();
	public?static?void?main(String[]?args)?{
		//解析book.xml文件
		//創(chuàng)建SAXreader的對象
		SAXReader??reader?=?new?SAXReader();
	
		try?{
			//通過reader對象的read方法加載book.xml文件,獲取document對象
			org.dom4j.Document?document?=?reader.read(new?File("src/res/book.xml"));
			//通過document對象獲取根節(jié)點bookstore
			org.dom4j.Element?bookStore?=?document.getRootElement();
			//element對象的elementIterator方法獲取迭代器
			Iterator?it?=?bookStore.elementIterator();
			//遍歷迭代器,獲取根節(jié)點中的信息
			while(it.hasNext()){
				Book?rbook?=?new?Book();
				System.out.println("======開始遍歷某一本書======");
				org.dom4j.Element?book?=?(org.dom4j.Element)it.next();
				//獲取book的屬性名以及屬性值
				java.util.List<Attribute>?bookAttrs?=?book.attributes();
				for(Attribute?attr?:?bookAttrs){
					System.out.println("屬性名:"?+?attr.getName()?+?"--屬性值:"
							?+?attr.getValue());
					rbook.setId(attr.getValue());
				}
				//獲取book的子節(jié)點以及其值
				Iterator?itt?=?book.elementIterator();
				while?(itt.hasNext())?{
					org.dom4j.Element?bookChild?=?(org.dom4j.Element)itt.next();
					System.out.println("節(jié)點名:"?+?bookChild.getName()?+?"--節(jié)點值:"?
							+?bookChild.getStringValue());
					//根據(jù)子節(jié)點名稱將子節(jié)點的內(nèi)容添加到rbook內(nèi)相應的變量里
					switch?(bookChild.getName())?{
					case?"title":?rbook.setTitle(bookChild.getStringValue());break;
					case?"author":?rbook.setTitle(bookChild.getStringValue());break;
					case?"year":?rbook.setTitle(bookChild.getStringValue());break;
					case?"price":?rbook.setTitle(bookChild.getStringValue());break;
					case?"language":?rbook.setTitle(bookChild.getStringValue());break;
					default:break;
					}
				}
				//將獲得的子節(jié)點加入書單,清除當前實例rbook的內(nèi)容,并打印出書單的內(nèi)容
				bookList.add(rbook);
				rbook?=?null;
				System.out.println("現(xiàn)在書單里有"?+?bookList.size()?+?"本書");
				System.out.println("這本書的ID是:"?+?bookList.get(0).getId());
				System.out.println("書名:"?+?bookList.get(0).getTitle());
				System.out.println("作者:"?+?bookList.get(0).getAuthor());
				System.out.println("======結束遍歷某一本書======");
			}
		}?catch?(DocumentException?e)?{
			//?TODO?Auto-generated?catch?block
			e.printStackTrace();
		}
	}
}

運行結果出來,bookList,也就是保存下來的2個實例對象內(nèi)容一樣,而且和子節(jié)點名字不一致。

以下為運行結果

======開始遍歷某一本書======

節(jié)點名:id--節(jié)點值:1

節(jié)點名:title--節(jié)點值:冰與火之歌

節(jié)點名:author--節(jié)點值:喬治馬丁

節(jié)點名:year--節(jié)點值:2009

節(jié)點名:price--節(jié)點值:89

現(xiàn)在書單里有1本書

這本書的ID是:1

書名:89

作者:null

======結束遍歷某一本書======

======開始遍歷某一本書======

節(jié)點名:id--節(jié)點值:2

節(jié)點名:title--節(jié)點值:安徒生童話

節(jié)點名:year--節(jié)點值:1998

節(jié)點名:price--節(jié)點值:22

節(jié)點名:language--節(jié)點值:English

現(xiàn)在書單里有2本書

這本書的ID是:1

書名:89

作者:null

======結束遍歷某一本書======


正在回答

1 回答

剛發(fā)現(xiàn)了,子節(jié)點名字內(nèi)容不一致是因為我在switch語句里用錯了方法,全部用成了setTitle()

現(xiàn)在還有存下來的兩本書都是一樣的的問題。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

第四章DOM4J的應用最后一小節(jié)里的作業(yè),我用switch來替代之前JDOM4J的if-else語句保存子節(jié)點的內(nèi)容時,為什么會出現(xiàn)保存下來的兩本書都是同樣的內(nèi)容?而且內(nèi)容和節(jié)點名不一致。

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號