锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
package gz.lwm;
import java.io.File;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XPP3Reader;
public class TestDom4j {
private static final Logger log = Logger.getLogger(TestDom4j.class);
private static long bt;
public static void main(String[] args) {
Document doc = DocumentHelper.createDocument();
//鍏堣繍琛実etXmlSAX()
bt = System.currentTimeMillis();
String strXml = getXmlSAX("xml/test.xml");
if(log.isDebugEnabled()){
log.debug("\ngetXmlSAX() use time: " + (System.currentTimeMillis() - bt) + " millis\n");
}
//鍐嶈繍琛実etXmlXPP3()
bt = System.currentTimeMillis();
String s1 =getXmlXPP3("xml/test.xml");
if(log.isDebugEnabled()){
log.debug("\ngetXmlXPP3() use time: " + (System.currentTimeMillis() - bt) + " millis\n");
}
}
public static String getXmlSAX(String xmlFile){
String result = "";
try {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(xmlFile));
result = document.asXML();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static String getXmlXPP3(String xmlFile){
String result = "";
try {
XPP3Reader reader = new XPP3Reader();
Document document = reader.read(new File(xmlFile));
result = document.asXML();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
鏈夋病鏈夎繖涓鍙?Document doc = DocumentHelper.createDocument()",瀵規ц兘鐨勫獎鍝嶅緢澶?鐗瑰埆鏄澶ml鏂囦歡(灝界騫舵病鏈変嬌鐢╠oc)
鍙﹀錛?getXmlXSAX()鍜実etXmlXPP3()榪愯鐨勫厛鍚庢搴忓鎬ц兘鐨勫獎鍝嶄篃寰堝ぇ錛?br>
嫻嬭瘯錛?br> 鍦ㄦ垜鐨勬満鍣ㄤ笂錛屽涓涓?00k宸﹀彸鐨刋ML鏂囦歡榪涜澶氭嫻嬭瘯鍚庣殑鍧囧肩粨鏋滀負錛?br>
getXmlXPP3() use time: 265 millis
...
getXmlXSAX() use time: 359 millis
...
緇撹錛?br> 閫氳繃姣旇緝錛屽湪璇誨彇XML鏂囦歡涓婏紝XPP3鐣ヤ負浼樹簬SAX錛?br>
娉ㄦ剰錛?br>
瑕佽繍琛屼緥瀛愶紝classpath闇鍖呭惈錛?br>dom4j-1.6.1.jar
jaxen-1.1-beta-10.jar
log4j-1.2.9.jar
pull-parser-2.1.10.jar
xpp3-1.1.4c.jar
鍙傝冿細
dom4j : http://www.dom4j.org/
XPP : http://www.extreme.indiana.edu/xgws/xsoap/xpp/
Ruby on Rails鏄竴涓緢涓嶉敊鐨剋eb寮鍙戞鏋訛紝涓嶈繃鐢變簬鐩墠鍏舵湰韜鍥介檯鍖栫殑鏀寔杈冨樊錛屾墍浠ラ渶瑕佷竴浜涜緟鍔╃殑涓滆タ鏉ヨВ鍐沖浗闄呭寲闂銆?/font>
鎴戞渶鍏堜嬌鐢ㄧ殑鏄竴涓彨localization鐨勬彃浠訛紝榪欎釜鎻掍歡鐨勪嬌鐢ㄨ鏄庡湪Ruby on Rails瀹樻柟鐨剋iki涓婇潰鏈夛紝榪欎釜鎻掍歡浣跨敤姣旇緝綆鍗曪紝涓嶈繃鍔熻兘姣旇緝寮便?/font>
鐩墠浣跨敤鐨勬槸Ruby-GetText錛岃繖涓彃浠跺姛鑳藉己澶э紝鍩轟簬GNU鐨刧ettext錛岃緇嗙殑浣跨敤璇存槑鍦?/font> http://manuals.rubyonrails.com/read/chapter/105 涓婇潰鏈夊啓錛屾垜澶ф鎻愪竴涓嬭鐐癸細
棣栧厛瑕佹槸Ruby on Rails鏀寔UTF-8錛岄氳繃灝嗗涓嬩唬鐮佹坊鍔犲埌environment.rb涓細
$KCODE = 鈥榰鈥?br />require 鈥榡code鈥?/font>
鎺ョ潃鏄畨瑁匯uby-GetText錛岃繍琛実em install gettext灝卞彲浠ヤ簡錛屽鏋滄槸Windows騫沖彴灝遍?錛屽惁鍒欓?銆傛帴鐫灝辨槸鍦ㄩ」鐩牴鐩綍涓嬮潰鍒涘緩po鐩綍錛岄噷闈㈡坊鍔犱綘闇瑕丩ocale鐨勫悕瀛椾綔涓哄瓙鐩綍錛屾瘮濡俥n, zh_CN絳夈傞渶瑕佸浗闄呭寲鐨勫瓧絎︿覆閮戒互_(鈥?)鏉ヤ功鍐欙紝姣斿鎯沖浗闄呭寲鈥滅紪杈戔濊繖涓爣絳撅紝灝卞彲浠ュ湪瑙嗗浘鐨剅html涓嬌鐢╛(鈥滶dit鈥?錛岃繖鏍峰湪鏄劇ず鐨勬椂鍊欎細鑷姩鏍規嵁Locale鏉ユ浛鎹㈡垚鐩稿簲鐨勫箋?/font>
鎺ョ潃鍦ㄩ」鐩殑rakefile閲岄潰濡備笅鍐呭錛?/font>
desc 鈥淐reate mo-files for L10n鈥?br />task :makemo do
聽 GetText.create_mofiles(true, 鈥減o鈥? 鈥渓ocale鈥?
end
闇瑕佹敞鎰忕殑鏄湪涓婇潰緇欏嚭鐨勯摼鎺ョ殑閭g瘒鏂囩珷閲岄潰錛岃繕闇瑕佹坊鍔爑pdatepo榪欐牱涓涓洰鏍囷紝涓嶈繃榪欎釜鐩爣鍦ㄦ垜榪欎笉璧蜂綔鐢紝鎬繪槸鍑洪敊錛屾垜鐨勫姙娉曟槸涓嬭澆閭g瘒鏂囩珷闄勫甫鐨勪唬鐮侊細 http://www.digitale-wertschoepfung.de/artikel/gettext/using-gettext-with-rails.tgz 銆傚湪閲岄潰鐨剆cript鐩綍涓嬮潰鏈変竴涓猯ocalize鏂囦歡錛屾妸瀹冩嫹璐濆埌浣犵殑欏圭洰鐨剆cript鐩綍涓嬮潰錛岀劧鍚庤繍琛宺uby ./script/localize {鏂囨湰鍩熺殑鍚嶅瓧}灝卞彲浠ヤ粠controllers, views涓洿鏂皃o鏁版嵁錛岀敤Unicode緙栬緫鍣紙姣斿UltraEdit錛変慨鏀瑰悇涓猵o鏂囦歡錛岀劧鍚庤繍琛宺ake makemo灝卞彲浠ヤ簡銆傚叧浜庡鏋滀慨鏀筧pplication.rb鍙婂叾浠朿ontroller鐨勪唬鐮侊紝鏌ョ湅緇欏嚭鐨勯摼鎺ャ傛鏃墮噸鏂板惎鍔╯erver錛屽氨鍙互鏌ョ湅鏁堟灉浜嗐?/font>
聽 聽 鍏冪紪紼嬪茍涓嶆槸涓涓緢鏂扮殑姒傚康錛岄氬父鍏冪紪紼嬭璁や負鏄氳繃紼嬪簭鏉ョ敓鎴愮▼搴忥紝濡傛灉浠庤繖縐嶆剰涔変笂鏉ヨ冭檻錛岄偅涔坙ex鍜寉acc浠ュ強JavaCC搴旇閮藉彲浠ョ畻鏄叿鏈変簡鍏冪紪紼嬬殑姒傚康錛屽湪Java涓紝鍏冪紪紼嬪緱鍒頒簡騫挎硾鐨勫簲鐢ㄣ備絾鍦≧uby涓紝鍏冪紪紼嬬殑浣跨敤鍙樺緱鐩稿綋鐨勭畝鍗曞拰瀹規槗瀹炵幇錛屼嬌鐢≧uby璇█鏈韓鏉ヤ駭鐢烺uby浠g爜錛屼笉闇瑕佸熷姪澶栭儴鐨勫伐鍏鳳紝钁楀悕鐨凴oR妗嗘灦灝辨槸寤虹珛鐨凴uby鍏冪紪紼嬬殑鍩虹涓婄殑銆傚彲鑳戒綘浣犲鍏冪紪紼嬭繕娌′粈涔堟蹇碉紝浣嗘槸Ruby宸茬粡鍐呭緩浜嗗厓緙栫▼榪欑鏈哄埗錛屾墍浠ュ緢鏈夊彲鑳斤紝浣犲湪涓嶇煡涓嶈涓氨宸茬粡浣跨敤浜哛uby鍏冪紪紼嬫妧鏈負浣犲甫鏉ョ殑鏂逛究涔嬪銆傚涓嬮潰榪欐浠g爜錛?/font>
class Person
聽 聽 鍦≧uby On Rails涓紝鏈変竴涓狾R鏄犲皠灞傦紝灝辨槸鍔ㄦ佺殑浠庝竴寮犲叧緋昏〃鏄犲皠鍒頒竴涓璞★紝榪欎富瑕佺敱ActiveRecord綾繪潵瀹炵幇銆傚湪OR鏄犲皠妯″瀷涓紝灝嗗叧緋繪暟鎹簱涓殑鍏崇郴琛ㄨ〃鏄犲皠鍒板璞℃ā鍨嬫椂錛屽皢鍏崇郴琛ㄧ殑琛ㄥ悕鏄犲皠鍒扮被鍚嶏紝琛ㄤ腑鐨勬瘡涓涓厓緇勬槧灝勫埌瀵瑰簲浜庤繖涓被鐨勪竴涓璞★紝鍏冪粍鐨勪竴涓瓧孌靛搴斾簬瀵硅薄鐨勪竴涓睘鎬с?/font>
鍋囧鎴戜滑鏈変竴涓繚瀛樿亴鍛樺熀鏈俊鎭殑鏂囦歡錛屾枃浠剁殑鏍煎紡鏄繖鏍風殑錛氱涓琛屾槸鏂囦歡鍐呭鐨勬瘡涓瓧孌電殑鍚嶇О錛屼粠絎簩琛屽紑濮嬶紝鍒欐槸姣忎釜鑱屽憳鐨勫熀鏈俊鎭傜幇鍦ㄦ垜浠湁涓涓枃浠跺悕涓衡渆mployee.txt鈥濈殑鏂囦歡錛屽叾鍐呭濡備笅鎵紺猴細
name,age,gender
"John", 23, "male"
"Linclon", 25, "male"
鍋囪鎴戜滑灝辮浠庤繖涓枃鏈枃浠朵腑璇誨彇鏁版嵁錛屽茍榪涜涓瀹氱殑澶勭悊銆傚鏋滄槸浣跨敤C++緙栫▼錛屼綘棣栧厛涓瀹氫細鎯沖埌搴旇瀹氫箟涓涓狤mployee綾伙紝鐒跺悗榪欎釜綾諱腑鏈塶ame, age, gender榪欎簺鎴愬憳鍙橀噺銆備絾鏄槸閲囩敤榪欑鏂規硶鐨勮瘽錛屽彲浠ュ彂鐜幫紝濡傛灉鎯沖湪鑱屽憳淇℃伅涓姞鍏ヤ竴涓瓧孌碉紝姣斿閮ㄩ棬錛坉epartment錛夛紝灝變笉寰椾笉淇敼Employee綾葷殑浠g爜錛屽湪Employee綾諱腑澧炲姞涓涓渄epartment鈥濇垚鍛樺彉閲忥紝鎵浠ユ垜浠殑浠g爜鏄珮搴︿緷璧栦簬鏂囦歡鐨勫叿浣撴牸寮忥紝榪欏綋鐒朵笉鏄竴涓ソ鐨勭幇璞°傛垜浠笇鏈涙湁涓縐嶆洿綆鍗曞拰浼橀泤鐨勬柟妗堬紝榪樻湁錛孯uby鍔ㄦ佹ф彁楂樼粰鎴戜滑涓涓В鍐蟲柟妗堬紝浣嗘槸錛屾垜浠簲璇ヤ粠鍜屼笅鎵嬪憿錛岃繖灝遍渶瑕丷uby鐨勫厓緙栫▼鑳藉姏銆?/font>
聽 聽 棣栧厛錛屾垜浠兂搴旇鏈変竴涓亴鍛樼被錛屽湪Rails涓紝姣忎釜鍏崇郴琛ㄧ殑鍚嶇О浼氭垚涓虹被鐨勫悕縐幫紝鍦ㄨ繖閲岋紝閲囩敤綾諱技鐨勬柟娉曪紝灝嗘枃鏈枃浠剁殑鍚嶇О浣滀負綾葷殑鍚嶇О錛屽湪Ruby涓紝綾誨悕鍚屾椂涔熸槸涓涓父閲忓悕錛屾墍浠ョ涓涓瓧姣嶅繀欏諱負澶у啓錛屾垜浠嬌鐢ㄥ涓嬬殑浠g爜鏉ョ敓鎴愮被鍚嶃?/font>
class_name = File.basename(file_name, ".txt").capitalize
# "employee.txt" => "Employee"
klass = Object.const_set(class_name, Class.new)
Class.new鐢熸垚涓涓柊鐨勭被錛岃繖涓被鐨勫悕縐版槸鍖垮悕鐨勶紝鎵浠ラ噰鐢╟onst_set鎿嶄綔鏉ョ粦瀹氫竴涓被鍚嶏紝鍙橀噺klass鏄柊綾誨瀷鐨勫紩鐢ㄣ?/font>
鐢熸垚浜嗚繖涓被浠ュ悗錛岄渶瑕佹兂榪欎釜綾繪坊鍔犲鍚嶏紝騫撮緞鍜屾у埆榪欎簺灞炴э紝榪欎簺灞炴х殑鍚嶇О鏄湪鏂囨湰鏂囦歡鐨勭殑絎竴琛屼腑緇欏嚭鐨勩?br />
data = File.new(file_name)
header = data.gets.chomp
data.close
names = header.split(",")
涓嬮潰鐨勪唬鐮佺粰鍑轟簡濡備綍鐢熸垚榪欎簺灞炴э紝浠ュ強鍒濆鍖栬繖浜涘睘鎬у箋?br />
鐜板湪錛屾湁浜嗕竴緋誨垪鐨勮闂瓙錛堝彲璇誨拰鍙啓錛夛紝閫氳繃instance_variable_set鏂規硶錛屽張緇欐瘡涓睘鎬у仛浜嗗垵濮嬪寲銆?br />
鍙橀噺names鏄湪鍧楀閮ㄥ畾涔夌殑錛岀敱浜庡潡鐨勯棴鍚堟э紝鎵浠ュ彉閲弉ames鍦ㄥ潡涓篃鏄湁鏁堢殑銆傚綋鐒訛紝涓轟簡紼嬪簭鐨勬紨紺猴紝鍙堝畾涔夌殑浜嗕竴涓猼o_s鏂規硶錛屼唬鐮佸涓嬫墍紺猴細
聽 聽 瀹屾垚浜嗚繖浜涗互鍚庯紝瀵逛簬綾葷殑鏋勯犲凡緇忓熀鏈粨鏉熶簡錛岀幇鍦ㄥ氨闇瑕佺湡姝g殑浠庢枃鏈枃浠朵腑璇誨彇鏁版嵁浜嗐備粠鏂囨湰鏂囦歡璇繪暟鎹簲璇ユ槸涓涓被鏂規硶錛岃屼笉鏄竴涓疄渚嬬殑鏂規硶錛屽叾瀹炵幇浠g爜濡備笅錛?br />
鍦ㄨ繖涓柟娉曚腑錛屼嬌鐢ㄥ瓧鐨勭被鍚嶆潵鍖歸厤鐩稿叧鐨勬枃浠訛紝姣斿灝咵mployee綾繪槧灝勫埌鈥渆mployee銆倀xt鈥濄?br />
鐒跺悗錛屼粠鏂囦歡涓鍙栬亴鍛樹俊鎭紝鐢變簬絎竴琛屾槸瀛楁瀹氫箟錛屾墍浠ヨ鑸嶅純絎竴琛屾暟鎹備粠絎簩琛屽紑濮嬭鍙栨暟鎹紝姣忚鍙栦竴琛屾暟鎹紝鍒欐瀯閫犱竴涓狤mployee瀹炰緥銆?font color="black">閫氳繃涓婇潰榪欎釜綆鍗曠殑渚嬪瓙錛屾垜浠彲浠ョ湅鍑哄厓緙栫▼鐨勫姛鑳芥槸鐩稿綋涔嬪己澶х殑錛屼嬌鐢ㄥ厓緙栫▼鎶鏈紝鍙互鏋勯犵浉褰撶畝鍗曪紝浼橀泤鐨勮В鍐蟲柟妗堛?/font>
1.瀹夎Ruby
http://rubyforge.org/frs/?group_id=167
榪欓噷鏈墂indows涓閿畨瑁呯増鏈?/font>
2.鍦ㄧ嚎瀹夎Rails
C:\> gem聽install聽rails聽--include-dependencies
浠ヤ笂鏂規硶鍦ㄤ竴鑸儏鍐典笅閮芥槸鍙鐨? 浣嗗鏋滀笉琛岀殑璇? 榪樺彲鍙傜収浠ヤ笅鏂規硶:
1. 璁塊棶:http://instantrails.rubyforge.org/wiki/wiki.pl
聽聽
聽聽 涓嬭澆鏈鏂扮増鏈殑InstantRails
2. 瑙e帇鍒頒綘鎸囧畾鐨勭洰褰曚笅, 娉ㄦ剰, 鐩綍鍚?鍖呮嫭璺緞鍚?涓嶈兘鏈夌┖鏍?br />
3. 璁塊棶鍏朵腑鐨剅eadme.txt, 閲岄潰璇︾粏璇存槑浜嗗浣曢厤緗拰榪愯InstantRails
浠ヤ笂浠g爜鍗沖彲鏍規嵁闇瑕佸湪鍒漢鐨刼nLoad()浜嬩歡涔嬪墠鎴栦箣鍚庢墽琛岃嚜宸辯殑浠g爜!