perl對文字具有強大的處理能力。對於xml的處理,perl自帶有xml::dom 和 xml::******兩個模組用來處理xml。
xml::dom過於龐大,而且解析結果是乙個dom樹,操作也不方便。我們更多的是處理小型簡單的xml檔案,所以更多的是採用xml::******。
但不管是dom還是******,當涉及到gb2312和gbk編碼的時候,雖然對perl用encodeing = "gb2312 " 指定編碼,但由於一些火星文,
還是常常解析出錯。而且用這兩個模組處理的時候,一旦出錯,就導致整個檔案不能解析。
對於特定的場合,完全可以用perl的正則匹配語法,來處理xml檔案。
比如下面的文字
今日** 【qq**千件秒殺】百事運動 防震緩衝慢跑男鞋 翼神 00
20100605065101
250470602
我想今天買這雙鞋00
20100605065125
250470602
首先,通過下面函式,將每乙個訊息隔開。注意其中訊息可能換行的處理。
sub processmessages}}
然後對每條訊息進行處理
sub processonemsg
}這樣,完全規避了對其中非ascii編碼的處理。不管什麼編碼格式,都可以處理。
一旦有個別訊息不能處理,丟棄的只是個別訊息,而不會影響整個檔案的處理。
Perl中文編碼的處理
在perl內部,字串結構由兩部分組成 資料和utf8 flag.例如 utf8 flag 資料 on 中文 如果utf8 flag為on的話,perl就會把 中文 當成utf8字串來處理,如果utf8 flag為off,perl就會把他當成octets來處理.所有字串相關的函式包括正規表示式都會受u...
SAX解析含特殊字元的xml文件(java)
一 不含自定義字元或含較少量的特殊字元 一般的特殊字元有五個 單引號 雙引號 這些字元如果直接出現在xml文件中,一般是不能解析出來的,如解析a b時會報錯。解決方法有兩個 1.用標記 2.轉義。1.用標記 對於含特殊字元的element用標記起來即可成功解析,如 該方法簡單但不實用,對於每個含特殊...
Perl語言入門 用正規表示式處理文
用s 替換 將指定變數合乎模式的部分替換為另乙個串 he s out bowling with barney tonight.s bareny fred 把barney替換為fred print n 如果匹配失敗,則什麼事都不會發生,變數也不受影響 全域性替換 g 即使有其他可以替換的部分,s 也只...