?。。≌埥蹋。。「魑焕蠋?,同學,請問這節視頻中提到的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>
話有點多, 請多包涵! 非常感謝!
2015-10-14
每次遇到標簽時都會執行,將空白也誤認為是節點值進行輸出,
<book id="1">
? ? ? <name>三體</name>
<author>劉慈欣</author>
<year>2014</year>
</book>
這段總共執行了7次,有多少個節點就執行多少次,空白執行了4次
2016-03-11
執行到startElement時,就開始向字符數組寫字符,一到endElement時,立即停止這一次的字符,由此就可以知道字符數組里的內容及長度。下一次時繼續這樣操作。每次數組的內容都是startElement和endElement的值。
2015-05-23
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 之類的字符。
characters看不出來是在什么時候執行的,請問它是在遇到哪個標簽時執行? 下面這個XML就讓characters執行了十五次,費解。
答:這個應該是空白文本,和正常的字符文本 都要執行,但是空白文本具體執行了哪幾次 不知道。。 如有知道,請告知。 謝謝。
2015-05-22
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));
? }
? }