?。?!請(qǐng)教?。?!各位老師,同學(xué),請(qǐng)問這節(jié)視頻中提到的characters是什么時(shí)候執(zhí)行?
我自己試著調(diào)試了下,
感覺startElement是在遇到“<>”就執(zhí)行,而endElement是在遇到“</>”就執(zhí)行,那么
1.characters看不出來是在什么時(shí)候執(zhí)行的,請(qǐng)問它是在遇到哪個(gè)標(biāo)簽時(shí)執(zhí)行? 下面這個(gè)XML就讓characters執(zhí)行了十五次,費(fèi)解。
2.characters方法中,傳的ch數(shù)組, 我直接輸出這串?dāng)?shù)組,發(fā)現(xiàn)輸出跟原來的XML很像。ch數(shù)組是包含了XML里所有字符嗎? ?
3.characters方法中,傳的start指向的位置是<></>中間第一個(gè)字符的入口地址嗎? ?可是為什么我在characters方法中?System.out.println(new String(ch,start,10)); ?發(fā)現(xiàn)它是下面這種輸出的,我感覺是入口地址在<>前,如果<></>中有內(nèi)容, 下一次 入口地址是在<>后。請(qǐng)問它的start到底指向哪兒?length不是輸出的字符數(shù)量嗎,為什么System.out.println(new String(ch,start,length));的時(shí)候只會(huì)輸出<></>間的文本,不會(huì)將符號(hào)"<"和節(jié)點(diǎn)名稱輸出?
4. game節(jié)點(diǎn)中的id屬性,可以根據(jù)視頻那樣用傳入的attributes.getValue()輸出,那么我寫的?<英雄聯(lián)盟?id="國服"?版本="3.14"></英雄聯(lián)盟> ,如果是DOM解析,可以直接進(jìn)入子節(jié)點(diǎn)通過getNodeValue得到id,版本屬性,那么SAX解析如何直接將id屬性和版本屬性輸出呢?
<game id
<英雄聯(lián)盟 i
<角色 >瑞
瑞文</角色>
<ages>
18</ages>
....省略
我的xml文件。
<?xml?version="1.0"?encoding="GBK"?> <games> ????<game?id="1"> ????????<英雄聯(lián)盟?id="國服"?版本="3.14"></英雄聯(lián)盟> ????????<角色?>瑞文</角色> ????????<ages>18</ages> ?????</game> ?????<game?id="2"> ????????<QQ飛車?id="國服"?版本="6.07"></QQ飛車> ????????<角色>風(fēng)中過客</角色> ????????<等級(jí)>109</等級(jí)> ????</game> </games>
話有點(diǎn)多, 請(qǐng)多包涵! 非常感謝!
2015-10-14
每次遇到標(biāo)簽時(shí)都會(huì)執(zhí)行,將空白也誤認(rèn)為是節(jié)點(diǎn)值進(jìn)行輸出,
<book id="1">
? ? ? <name>三體</name>
<author>劉慈欣</author>
<year>2014</year>
</book>
這段總共執(zhí)行了7次,有多少個(gè)節(jié)點(diǎn)就執(zhí)行多少次,空白執(zhí)行了4次
2016-03-11
執(zhí)行到startElement時(shí),就開始向字符數(shù)組寫字符,一到endElement時(shí),立即停止這一次的字符,由此就可以知道字符數(shù)組里的內(nèi)容及長度。下一次時(shí)繼續(xù)這樣操作。每次數(shù)組的內(nèi)容都是startElement和endElement的值。
2015-05-23
2.characters方法中,傳的ch數(shù)組, 我直接輸出這串?dāng)?shù)組,發(fā)現(xiàn)輸出跟原來的XML很像。ch數(shù)組是包含了XML里所有字符嗎? ?
答:視頻里面提到過 ch就是包含了整個(gè)XML。
3.characters方法中,傳的start指向的位置是<></>中間第一個(gè)字符的入口地址嗎? ?可是為什么我在characters方法中?System.out.println(new String(ch,start,10)); ?發(fā)現(xiàn)它是下面這種輸出的,我感覺是入口地址在<>前,如果<></>中有內(nèi)容, 下一次 入口地址是在<>后。請(qǐng)問它的start到底指向哪兒?length不是輸出的字符數(shù)量嗎,為什么System.out.println(new String(ch,start,length));的時(shí)候只會(huì)輸出<></>間的文本,不會(huì)將符號(hào)"<"和節(jié)點(diǎn)名稱輸出?
答:視頻里提到start是在<>后,length大小,是剛好到</>前。而且空白的文本節(jié)點(diǎn)應(yīng)該也是如此。由于空白節(jié)點(diǎn)字節(jié)數(shù)不夠,因此輸出到了如?<game id 之類的字符。
characters看不出來是在什么時(shí)候執(zhí)行的,請(qǐng)問它是在遇到哪個(gè)標(biāo)簽時(shí)執(zhí)行? 下面這個(gè)XML就讓characters執(zhí)行了十五次,費(fèi)解。
答:這個(gè)應(yīng)該是空白文本,和正常的字符文本 都要執(zhí)行,但是空白文本具體執(zhí)行了哪幾次 不知道。。 如有知道,請(qǐng)告知。 謝謝。
2015-05-22
4. game節(jié)點(diǎn)中的id屬性,可以根據(jù)視頻那樣用傳入的attributes.getValue()輸出,那么我寫的?<英雄聯(lián)盟?id="國服"?版本="3.14"></英雄聯(lián)盟> ,如果是DOM解析,可以直接進(jìn)入子節(jié)點(diǎn)通過getNodeValue得到id,版本屬性,那么SAX解析如何直接將id屬性和版本屬性輸出呢? ?
已經(jīng)解決, 直接在后面
else if(!qName.equals("game")&&(!qName.equals("games"))){
? System.out.print("節(jié)點(diǎn)名:"+qName+"---");
? for(int i=0;i<attributes.getLength();i++){
? System.out.println("屬性名稱:"+attributes.getQName(i)+
? "---"+attributes.getValue(i));
? }
? }