亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

?。。≌埥蹋。。「魑焕蠋?,同學,請問這節視頻中提到的characters是什么時候執行?

我自己試著調試了下,

感覺startElement是在遇到“<>”就執行,而endElement是在遇到“</>”就執行,那么

1.characters看不出來是在什么時候執行的,請問它是在遇到哪個標簽時執行? 下面這個XML就讓characters執行了十五次,費解。

2.characters方法中,傳的ch數組, 我直接輸出這串數組,發現輸出跟原來的XML很像。ch數組是包含了XML里所有字符嗎? ?

3.characters方法中,傳的start指向的位置是<></>中間第一個字符的入口地址嗎? ?可是為什么我在characters方法中?System.out.println(new String(ch,start,10)); ?發現它是下面這種輸出的,我感覺是入口地址在<>前,如果<></>中有內容, 下一次 入口地址是在<>后。請問它的start到底指向哪兒?length不是輸出的字符數量嗎,為什么System.out.println(new String(ch,start,length));的時候只會輸出<></>間的文本,不會將符號"<"和節點名稱輸出?

4. game節點中的id屬性,可以根據視頻那樣用傳入的attributes.getValue()輸出,那么我寫的?<英雄聯盟?id="國服"?版本="3.14"></英雄聯盟> ,如果是DOM解析,可以直接進入子節點通過getNodeValue得到id,版本屬性,那么SAX解析如何直接將id屬性和版本屬性輸出呢?

<game id

<英雄聯盟 i

<角色 >瑞

瑞文</角色>

<ages>

18</ages>

....省略

我的xml文件。

<?xml?version="1.0"?encoding="GBK"?>
<games>
????<game?id="1">
????????<英雄聯盟?id="國服"?版本="3.14"></英雄聯盟>
????????<角色?>瑞文</角色>
????????<ages>18</ages>
?????</game>
?????<game?id="2">
????????<QQ飛車?id="國服"?版本="6.07"></QQ飛車>
????????<角色>風中過客</角色>
????????<等級>109</等級>
????</game>
</games>

話有點多, 請多包涵! 非常感謝!

正在回答

4 回答

每次遇到標簽時都會執行,將空白也誤認為是節點值進行輸出,

<book id="1">

? ? ? <name>三體</name>

<author>劉慈欣</author>

<year>2014</year>

</book>

這段總共執行了7次,有多少個節點就執行多少次,空白執行了4次

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

風中過客 提問者

非常感謝!
2016-03-25 回復 有任何疑惑可以回復我~

執行到startElement時,就開始向字符數組寫字符,一到endElement時,立即停止這一次的字符,由此就可以知道字符數組里的內容及長度。下一次時繼續這樣操作。每次數組的內容都是startElement和endElement的值。

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

2.characters方法中,傳的ch數組, 我直接輸出這串數組,發現輸出跟原來的XML很像。ch數組是包含了XML里所有字符嗎? ?

答:視頻里面提到過 ch就是包含了整個XML。

3.characters方法中,傳的start指向的位置是<></>中間第一個字符的入口地址嗎? ?可是為什么我在characters方法中?System.out.println(new String(ch,start,10)); ?發現它是下面這種輸出的,我感覺是入口地址在<>前,如果<></>中有內容, 下一次 入口地址是在<>后。請問它的start到底指向哪兒?length不是輸出的字符數量嗎,為什么System.out.println(new String(ch,start,length));的時候只會輸出<></>間的文本,不會將符號"<"和節點名稱輸出?

答:視頻里提到start是在<>后,length大小,是剛好到</>前。而且空白的文本節點應該也是如此。由于空白節點字節數不夠,因此輸出到了如?<game id 之類的字符。

  1. characters看不出來是在什么時候執行的,請問它是在遇到哪個標簽時執行? 下面這個XML就讓characters執行了十五次,費解。

答:這個應該是空白文本,和正常的字符文本 都要執行,但是空白文本具體執行了哪幾次 不知道。。 如有知道,請告知。 謝謝。

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

4. game節點中的id屬性,可以根據視頻那樣用傳入的attributes.getValue()輸出,那么我寫的?<英雄聯盟?id="國服"?版本="3.14"></英雄聯盟> ,如果是DOM解析,可以直接進入子節點通過getNodeValue得到id,版本屬性,那么SAX解析如何直接將id屬性和版本屬性輸出呢? ?

已經解決, 直接在后面

else if(!qName.equals("game")&&(!qName.equals("games"))){

? System.out.print("節點名:"+qName+"---");

? for(int i=0;i<attributes.getLength();i++){

? System.out.println("屬性名稱:"+attributes.getQName(i)+

? "---"+attributes.getValue(i));

? }

? }


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

舉報

0/150
提交
取消

?。?!請教!??!各位老師,同學,請問這節視頻中提到的characters是什么時候執行?

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

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號