国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Java > 正文

xml 的特殊字符的處理方法

2019-11-26 14:05:21
字體:
供稿:網(wǎng)友

遇到這一方面的問題是因?yàn)槲以噲D把一個(gè)對(duì)象序列化之后存貯到xml文件中,然后從xml文件中讀取字符串,并反序列化對(duì)象(hadoop mapreduce程序中通過JobConf向tasktracker傳送對(duì)象)。

有關(guān)序列化:

當(dāng)我把序列化之后的數(shù)據(jù)直接存在xml中后,在解析xml時(shí)遇到解析錯(cuò)誤,原因是有非法字符。在詳細(xì)閱讀xml的說明之后才發(fā)現(xiàn):< > ' " &是不允許作為xml的PCDATA的。要使用這幾個(gè)字符,必須要把他們替換為內(nèi)建實(shí)體:

實(shí)體引用  字符

< <
> >
& &
" "
' '

所以,最直接的方法就是自己控制,在寫入xml文件時(shí)把特殊字符轉(zhuǎn)為實(shí)體引用,在讀取的時(shí)候,再轉(zhuǎn)回來。當(dāng)然還有另外一個(gè)方法就是不把字符串當(dāng)PCDATA,而是當(dāng)成CDATA來使用(沒有測(cè)試)。

 用實(shí)體引用的方法太麻煩,而我的應(yīng)用xml的格式不能自己規(guī)定,所以只好尋找另外的方法:BASE64編碼。這是一種常用在網(wǎng)絡(luò)傳輸數(shù)據(jù)的編碼方式。把存在這些非法字符的字符編碼成base64編碼,就不會(huì)有這些字符了。最重要的是java api中提供了這種編碼的編碼器和解碼器,位于sun.misc的BASE64Encoder和BASE64Decoder。這樣就可以把序列化之后得到的字節(jié)流轉(zhuǎn)化成字符串了。并且也可以存貯在xml文件中。

不過這兩個(gè)類并不是sun的開放api,編譯會(huì)有警告。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 孙吴县| 平顺县| 湛江市| 金溪县| 温泉县| 神木县| 尉犁县| 钟山县| 印江| 郧西县| 宁国市| 两当县| 图木舒克市| 林西县| 方城县| 晋中市| 潢川县| 沙坪坝区| 隆子县| 高要市| 黄冈市| 将乐县| 合川市| 巴林左旗| 仁布县| 定兴县| 大足县| 沽源县| 屏东县| 菏泽市| 招远市| 大邑县| 商城县| 绍兴县| 县级市| 手机| 建瓯市| 永平县| 观塘区| 闻喜县| 远安县|