?
作為一名專欄作家,我的目標(biāo)并不是報導(dǎo)新聞、或是向讀者提供一份不斷更新的專家投資建議。相反我認(rèn)為,有些金融投資指南是放之四海皆準(zhǔn)的,因此我會反復(fù)加以琢磨。
其中有些投資建議是我經(jīng)常掛在嘴邊的,而另一些是最近突然閃現(xiàn)在我的腦海里。想更好地管理你的資金嗎?我在這里向您提供九條最重要的理財法則。
1)勇于說“不”
為了成功地進(jìn)行儲蓄和投資,沒什么比自律更重要了。
這意味著看準(zhǔn)一些股票、債券和貨幣市場基金后進(jìn)行投資,然后堅持持有這一投資組合,無論動蕩的市場是多么令人煩惱不安,也無論你是多么想購買最新的熱門股。
更重要的是,你不能輕易自滿,因此可進(jìn)行適量的定期儲蓄。
2)別患上享樂適應(yīng)癥
花錢并不能給你帶來快樂。然而許多人都這么做,于是他們一生都要面對高額的信用卡帳單,以及失望的情緒。
知道這個心理循環(huán)嗎?你看中了某件商品,然后認(rèn)定非要得到它不可,于是付帳。然而幾周或幾個月之后,你就把這件事忘得一干二凈,又開始新的物質(zhì)追求了。
學(xué)者們把這種現(xiàn)象稱為“快樂水車”或“享樂適應(yīng)癥”(hedonic treadmill)。從中可以吸取的教訓(xùn)是什么呢?如果你想得到快樂,別到購物中心去尋找,那里是找不到的。
3)我們就是市場
盡管大家都在談?wù)撆苴A大市,但事實上我們的前進(jìn)道路上存在著一個不可逾越的障礙。
不可能所有的人都跑贏大市,因為我們本身就是市場的組成部份。如果有人跑贏大市,那么必然有人被市場打敗。
實際上,如果再算上投資成本,能跑贏大市的投資者就寥寥無幾了,而大多數(shù)投資者都落后于市場平均水平。
4)誰分了你的錢
還有一點你得記住,不管你是否樂意,你還有兩位投資伙伴:華爾街和收稅員。你們?nèi)齻€人共同分配你的投資收益。
想自己多留一點,給華爾街和收稅員少點?最好的辦法是降低投資成本,同時最大限度地利用避稅的退休金帳戶。
5)請專家?guī)兔?/font>
十年前,我認(rèn)為大多數(shù)投資者有能力自己進(jìn)行投資。如今,我可不這么想了。
看上去大多數(shù)投資者是沒有時間、興趣和精力親自進(jìn)行成功的投資的。
不過遺憾的是,即使你聘請了經(jīng)紀(jì)人或是理財規(guī)劃師,你的感覺也好不了多少。許多顧問收費昂貴,但他們自己也只有少得可憐的正規(guī)理財教育,因此你在挑選顧問的時候得特別小心。
6)別落在后面
當(dāng)專家們討論投資多樣化的時候,他們會指出,購買各種投資產(chǎn)品能降低投資風(fēng)險,因為其中一些投資會帶來收益,而另一些會出現(xiàn)虧損。
但問題在于:每當(dāng)我們面臨重大金融危機(jī)的時候,投資多樣化──特別在全球股票市場上進(jìn)行多樣化的投資──常常被證明是起不了什么作用的,因為所有的股票都在暴跌。
不過我覺得這種想法忽略了關(guān)鍵要點。即使美國股票和海外股票一同漲跌,它們的年投資回報還是存在著驚人的差距。那些僅僅投資于一個市場的投資者們可能會面臨較長的低迷時期。
此外,投資多樣化也不僅僅是為了減少投資組合的短期波動。你還想限制金融災(zāi)難給你帶來的損失,無論是因為政局動蕩而導(dǎo)致金融市場出現(xiàn)混亂,還是金融市場本身出現(xiàn)崩潰,例如上世紀(jì)九十年代的日本市場。
7)家庭很重要
孩子是你的繼承人。他們將繼承你的資產(chǎn),也極有可能接受你的理財觀念。
你的家庭是你最大的資產(chǎn),同時也是最大的負(fù)債。如果你的孩子或父母陷入了財務(wù)困境,你將伸出援手。同樣,在你碰到困難時,他們也會伸出援手。
記住這些很重要。可以與你的父母談?wù)勊麄兊呢攧?wù)狀況,也可以教導(dǎo)孩子們?nèi)绾卫碡敗?/p>
想想你自己是如何管理財產(chǎn)的吧,特別是想想當(dāng)出現(xiàn)問題時,它們會給家庭帶來什么影響。
8)進(jìn)行長期投資
如果你年紀(jì)輕輕就離開人世,這對你的配偶和孩子來說是沉重的打擊。但是請別忽略了其他風(fēng)險:如果你活得遠(yuǎn)比預(yù)計的長呢?
許多退休人士非常擔(dān)心英年早逝,因此他們急著申請社會保障金,而拒絕購買終生年金。如果你確信自己和配偶生命短暫的話,采取這樣的策略是正確的,至少你活著的時候手頭充裕。
然而,如果你早早地領(lǐng)取了社會保障金,而且也不購買年金,但實際卻活得很長呢?那你就得一分一厘地算著花錢了。
9)最后一根稻草
在金融市場開盤的交易日里,我通常每隔幾小時就會查看與通貨膨脹掛鉤的國債的收益率。
在我看來,與通貨膨脹掛鉤的國債可作為其他所有投資的基準(zhǔn)。如果我購買了十年期通貨膨脹掛鉤國債,我在今后十年內(nèi)獲得的投資收益將比通貨膨脹率高2.3個百分點。
除非我確信其他投資的表現(xiàn)優(yōu)于這一基準(zhǔn),否則我將繼續(xù)持有十年期通貨膨脹掛鉤國債。在我看來,這項投資是我的最后一根救命稻草。
posted @
2006-12-14 13:07 xzc 閱讀(234) |
評論 (0) |
編輯 收藏
版權(quán)所有,轉(zhuǎn)載請注明,來自www.jialing.net
??? Ajax(Asynchronous JavaScript and XML)說到底就是一種瀏覽器異步讀取服務(wù)器上XML內(nèi)容的技術(shù)。現(xiàn)在的技術(shù)凡是跟XML扯上關(guān)系,再加上個概念做幌子,就像金裝了一樣,拽得不行。門外 的人看得很是熱鬧,門里的人搖搖頭不外如是。XML呢,跨平臺的新潮語言?其實XML=TXT。XML只是符合很多規(guī)范的文本。它本身什么都不是,只是保 存字符的文件。而瀏覽器異步讀取的只是服務(wù)器上的文本內(nèi)容,所以在Ajax開發(fā)時完全不必拘泥于XML。[版權(quán)所有,www.jialing.net]
???? XML 的作用是格式化數(shù)據(jù)內(nèi)容。如果我們不用XML還有什么更好的方法嗎?這個答案是JSON。介紹JSON之前我先介紹一下JavaScript這門腳本語 言。腳本語言自身有動態(tài)執(zhí)行的天賦。即我們可以把想要執(zhí)行的語句放在字符串里,通過eval()這個動態(tài)執(zhí)行函數(shù)來執(zhí)行。字符串里的內(nèi)容會像我們寫的腳本 一樣被執(zhí)行。
示例1:
<HTML>
<HEAD>
<TITLE>eval?example?1</TITLE>
</HEAD>
<BODY>
<script>
str?=?"alert('hello')";
eval(str);
</script>
</BODY>
</HTML>
打開頁面會彈出hello窗口。
我們可以在字符串中放任何腳本語句,包括聲明語句:
<HTML>
<HEAD>
<TITLE>eval?example?2</TITLE>
</HEAD>
<BODY>
<script>
define?=?"{name:'Michael',email:'17bity@gmail.com'}";
eval("data?=?"+define);
alert("name:"+data.name);
alert("email:"+data.email);
</script>
</BODY>
</HTML>
??? 如果我們在后臺異步傳來的文本是JavaScript的聲明語句,那么不是一條eval方法就能解析了?對于解析復(fù)雜的XML,這樣的效率是多么大的提高啊!
??? 現(xiàn)在就來告訴你什么是JSON:JavaScript Object Notation。我更愿意把它翻譯為JavaScript對象聲明。比如要從后臺載入一些通訊錄的信息,如果寫成XML,如下:
<contact>
????<friend>
????????<name>Michael</name>
????????<email>17bity@gmail.com</email>
????????<homepage>http://www.jialing.net</homepage>
????</friend>
????<friend>
????????<name>John</name>
????????<email>john@gmail.com</email>
????????<homepage>http://www.john.com</homepage>
????</friend>
????<friend>
????????<name>Peggy</name>
????????<email>peggy@gmail.com</email>
????????<homepage>http://www.peggy.com</homepage>
????</friend>
</contact>
而寫成JSON呢:
[
? {
???name:"Michael",
???email:"17bity@gmail.com",
???homepage:"http://www.jialing.net"
?},
?{
???name:"John",
???email:"john@gmail.com",
???homepage:"http://www.jobn.com"
?},
? {
???name:"Peggy",
???email:"peggy@gmail.com",
???homepage:"http://www.peggy.com"
?}
]
??? 簡 單的不只是表達(dá)上,最重要的是可以丟棄讓人暈頭轉(zhuǎn)向的DOM解析了。因為只要符合JavaScript的聲明規(guī)范,JavaScrip會自動幫你解析好 的。Ajax中使用JSON的基本方法是前臺載入后臺聲明JavaScript對象的字符串,用eval方法來將它轉(zhuǎn)為實際的對象,最后通過 DHTML更新頁面信息。
JSON的基本格式如下,圖片來自json.org:
對象是屬性、值對的集合。一個對象的開始于"{",結(jié)束于"}"。每一個屬性名和值間用":"提示,屬性間用","分隔。

數(shù)組是有順序的值的集合。一個數(shù)組開始于"[",結(jié)束于"]",值之間用","分隔。

值可以是引號里的字符串、數(shù)字、true、false、null,也可以是對象或數(shù)組。這些結(jié)構(gòu)都能嵌套。

字符串的定義和C或Java基本一致。

數(shù)字的定義也和C或Java基本一致。
可讀性JSON和XML的可讀性可謂不相上下,一邊是建議的語法,一邊是規(guī)范的標(biāo)簽形式,很難分出勝負(fù)。
可擴(kuò)展性XML天生有很好的擴(kuò)展性,JSON當(dāng)然也有,沒有什么是XML能擴(kuò)展,JSON不能的。
編碼難度XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的編碼明顯比XML容易許多,即使不借助工具也能寫出JSON的代碼,可是要寫好XML就不太容易了。
解碼難度XML的解析得考慮子節(jié)點父節(jié)點,讓人頭昏眼花,而JSON的解析難度幾乎為0。這一點XML輸?shù)恼媸菦]話說。
流行度XML已經(jīng)被業(yè)界廣泛的使用,而JSON才剛剛開始,但是在Ajax這個特定的領(lǐng)域,未來的發(fā)展一定是XML讓位于JSON。到時Ajax應(yīng)該變成Ajaj(Asynchronous JavaScript and JSON)了。
[版權(quán)所有,www.jialing.net]
附:
JSON.org : http://www.json.org/
JSON in JavaScript : http://www.json.org/js.html
JSON: The Fat-Free Alternative to XML : http://www.json.org/xml.html
JSON and the Dynamic Script Tag: Easy, XML-less Web Services for JavaScript: http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html
Using JSON (JavaScript Object Notation) with Yahoo! Web Services: http://developer.yahoo.com/common/json.html
posted @
2006-12-13 12:32 xzc 閱讀(151) |
評論 (0) |
編輯 收藏
《
世界商業(yè)報道》
ICXO.COM ( 日期:2006-11-24 11:00)
上海的一個普通報販在日常經(jīng)營中發(fā)現(xiàn),很多人對高檔雜志有大量的閱讀需求,但往往因為動輒幾十元的零售價格望而卻步。于是,他自創(chuàng)了一套嶄新的經(jīng)營模式,發(fā)展會員制將雜志租給客戶,每個客戶每月交30元會費和20元押金,就可以不斷租雜志回家看。?
?
??? 很快發(fā)展了幾百名會員,測算下來他一個月能掙到8000元,收入水平遠(yuǎn)遠(yuǎn)超過了同行。
這個在市井街頭上演的真實故事近日通過上海某投資管理公司老總的個人博客在網(wǎng)上廣泛流傳,成為大家津津樂道的話題。看完這個故事,很多人或許都會想,同樣都是賣書報雜志的,為什么差別會那么大呢?
這個小販的故事,給我們提出了一個命題,在給定的外部環(huán)境、產(chǎn)業(yè)空間、成本產(chǎn)出比的條件下,如何獲得超過同行業(yè)平均水平的回報?在這個案例中,報販的選擇是改變商業(yè)模式,將原有的終端書報發(fā)行模式從“零售”改變?yōu)椤俺鲎狻保瑥亩鴮@利機(jī)制中的“銷售利潤”轉(zhuǎn)換成“出租利潤”。由于每個報攤本來每月就有冗余產(chǎn)品的沉淀,出租成本幾乎為零,而市場吸引力又遠(yuǎn)大于銷售,因此具備了成功的基礎(chǔ)。此外,由于每個客戶還要交20元押金,這樣上百人的押金又成為報販?zhǔn)种械囊还P可流動資金,相當(dāng)于無息貸款。用這筆錢可以繼續(xù)投入運營,比如根據(jù)客戶需求引進(jìn)品種更多的書報商品,擴(kuò)大自己的產(chǎn)品競爭力。
很多人或許會想,這樣模式設(shè)計并不難,為什么只有這個報販做成了呢?除了人家腳踏實地敢于實踐之外,可能還有細(xì)節(jié)方面不為人知的控制能力。網(wǎng)文雖未對此作更多描述,但我們可以設(shè)想,比如他可能會向客戶推薦介紹近期的熱點事件、精彩新聞,提供信息增值服務(wù),他還可能會用短信提醒一些平時太忙的客戶他要的雜志到了,提供“閱讀小秘書”之類的服務(wù)。類似的這些增值服務(wù),都可以提高“出租”模式的核心競爭力,讓客戶得到更多回報,從而保證了新商業(yè)模式的運行。
從為微軟MBA上課的出租車司機(jī),到月入8000的報販,他們都在做一件很多人都在做的普通事情上,走出了自己的新路,也獲得了超過他人的回報。比起深奧的教科書,這樣的民間智慧或許是大多數(shù)平凡的創(chuàng)業(yè)者更需要學(xué)習(xí)的。
最近,單位附近一家飯店生意火爆,原因之一是推出了一項別人沒有的簡單優(yōu)惠。這家飯店規(guī)定,等候20分鐘以上的顧客可以全單打八折,等候10分鐘的可以打九折,而在晚上6點半以前離開飯店的客人也可以打八折。如此一來,餐桌的翻臺率大大提高,愿意等的人數(shù)量也大大增加,小小的折扣杠桿為這家店撬動了更大的市場。
來自草根的管理智慧到處都是,只需要我們睜大眼睛。
posted @
2006-11-27 08:59 xzc 閱讀(268) |
評論 (0) |
編輯 收藏
中文資源轉(zhuǎn)換成utf-8編碼
native2ascii -encoding utf-8 project.properties.GBK project.properties
utf-8編碼格式的文件轉(zhuǎn)換成原來的格式
native2ascii -reverse -encoding utf-8 project.properties project.properties.GBK
posted @
2006-11-21 14:54 xzc 閱讀(519) |
評論 (1) |
編輯 收藏
摘要: 譯者:Flyingis譯文鏈接:http://www.tkk7.com/flyingis/archive/2006/11/18/81898.html???????????? http://gis.javaeye.com/blog/34853原文鏈接:http://getahead.ltd.uk/dwr/server/servlet翻譯目錄:http://www.tkk7.com/f...
閱讀全文
posted @
2006-11-19 13:50 xzc 閱讀(365) |
評論 (0) |
編輯 收藏
1、每一個成功者都有一個開始。勇于開始,才能找到成功的路。
2、世界會向那些有目標(biāo)和遠(yuǎn)見的人讓路(馮兩努——香港著名推銷商)
3、造物之前,必先造人。
4、與其臨淵羨魚,不如退而結(jié)網(wǎng)。
5、若不給自己設(shè)限,則人生中就沒有限制你發(fā)揮的藩籬。
6、賺錢之道很多,但是找不到賺錢的種子,便成不了事業(yè)家。
7、蟻穴雖小,潰之千里。
8、最有效的資本是我們的信譽,它24小時不停為我們工作。
9、絆腳石乃是進(jìn)身之階。
10、銷售世界上第一號的產(chǎn)品——不是汽車,而是自己。在你成功地把自己推銷給別人之前,你必須百分之百的把自己推銷給自己。
11、即使爬到最高的山上,一次也只能腳踏實地地邁一步。
12、積極思考造成積極人生,消極思考造成消極人生。
13、人之所以有一張嘴,而有兩只耳朵,原因是聽的要比說的多一倍。
14、別想一下造出大海,必須先由小河川開始。
15、有事者,事竟成;破釜沉舟,百二秦關(guān)終歸楚;苦心人,天不負(fù);臥薪嘗膽,三千越甲可吞吳。
16、你的臉是為了呈現(xiàn)上帝賜給人類最貴重的禮物——微笑,一定要成為你工作最大的資產(chǎn)。
17、以誠感人者,人亦誠而應(yīng)。
18、世上并沒有用來鼓勵工作努力的賞賜,所有的賞賜都只是被用來獎勵工作成果的。
19、即使是不成熟的嘗試,也勝于胎死腹中的策略。
20、積極的人在每一次憂患中都看到一個機(jī)會,而消極的人則在每個機(jī)會都看到某種憂患。
21、出門走好路,出口說好話,出手做好事。
22、旁觀者的姓名永遠(yuǎn)爬不到比賽的計分板上。
23、上帝助自助者。
24、怠惰是貧窮的制造廠。
25、莫找借口失敗,只找理由成功。(不為失敗找理由,要為成功找方法)
26、如果我們想要更多的玫瑰花,就必須種植更多的玫瑰樹。
27、偉人之所以偉大,是因為他與別人共處逆境時,別人失去了信心,他卻下決心實現(xiàn)自己的目標(biāo)。
28、世上沒有絕望的處境,只有對處境絕望的人。
29、回避現(xiàn)實的人,未來將更不理想。
30、先知三日,富貴十年。
31、當(dāng)你感到悲哀痛苦時,最好是去學(xué)些什么東西。學(xué)習(xí)會使你永遠(yuǎn)立于不敗之地。
32、偉人所達(dá)到并保持著的高處,并不是一飛就到的,而是他們在同伴們都睡著的時候,一步步艱辛地向上攀爬的。
33、世界上那些最容易的事情中,拖延時間最不費力。
34、堅韌是成功的一大要素,只要在門上敲得夠久、夠大聲,終會把人喚醒的。
35、夫婦一條心,泥土變黃金。
36、人之所以能,是相信能。
37、沒有口水與汗水,就沒有成功的淚水。
38、一個有信念者所開發(fā)出的力量,大于99個只有興趣者。
39、忍耐力較諸腦力,尤勝一籌。
40、環(huán)境不會改變,解決之道在于改變自己。
41、兩粒種子,一片森林。
42、每一發(fā)奮努力的背后,必有加倍的賞賜。
43、如果你希望成功,以恒心為良友,以經(jīng)驗為參謀,以小心為兄弟,以希望為哨兵。
44、大多數(shù)人想要改造這個世界,但卻罕有人想改造自己。
45、未曾失敗的人恐怕也未曾成功過。
46、人生偉業(yè)的建立 ,不在能知,乃在能行。
47、挫折其實就是邁向成功所應(yīng)繳的學(xué)費。
48、任何的限制,都是從自己的內(nèi)心開始的。
49、忘掉失敗,不過要牢記失敗中的教訓(xùn)。
50、不是境況造就人,而是人造就境況。
51、含淚播種的人一定能含笑收獲。
52、靠山山會倒,靠水水會流,靠自己永遠(yuǎn)不倒。
53、欲望以提升熱忱,毅力以磨平高山。
54、只要路是對的,就不怕路遠(yuǎn)。
55、一滴蜂蜜比一加侖膽汁能夠捕到更多的蒼蠅。
56、真心的對別人產(chǎn)生點興趣,是推銷員最重要的品格。
57、自古成功在嘗試。
58、一個能從別人的觀念來看事情,能了解別人心靈活動的人,永遠(yuǎn)不必為自己的前途擔(dān)心。
59、當(dāng)一個人先從自己的內(nèi)心開始奮斗,他就是個有價值的人。
60、生命對某些人來說是美麗的,這些人的一生都為某個目標(biāo)而奮斗。
61、推銷產(chǎn)品要針對顧客的心,不要針對顧客的頭。
62、沒有人富有得可以不要別人的幫助,也沒有人窮得不能在某方面給他人幫助。
63、凡真心嘗試助人者,沒有不幫到自己的。
64、積極者相信只有推動自己才能推動世界,只要推動自己就能推動世界。
65、每一日你所付出的代價都比前一日高,因為你的生命又消短了一天,所以每一日你都要更積極。 今天太寶貴,不應(yīng)該為酸苦的憂慮和辛澀的悔恨所銷蝕,抬起下巴,抓住今天,它不再回來。
66、一個人最大的破產(chǎn)是絕望,最大的資產(chǎn)是希望。
67、行動是成功的階梯,行動越多,登得越高。
68、環(huán)境永遠(yuǎn)不會十全十美,消極的人受環(huán)境控制,積極的人卻控制環(huán)境。
69、事實上,成功僅代表了你工作的1%,成功是99%失敗的結(jié)果。
70、不要等待機(jī)會,而要創(chuàng)造機(jī)會。
71、成功的法則極為簡單,但簡單并不代表容易。
72、如果寒暄只是打個招呼就了事的話,那與猴子的呼叫聲有什么不同呢?事實上,正確的寒暄必須在短短一句話中明顯地表露出你他的關(guān)懷。
73、昨晚多幾分鐘的準(zhǔn)備,今天少幾小時的麻煩。
74、拿望遠(yuǎn)鏡看別人,拿放大鏡看自己。
75、使用雙手的是勞工,使用雙手和頭腦的舵手,使用雙手、頭腦與心靈的是藝術(shù)家,只有合作雙手、頭腦、心靈再加上雙腳的才是推銷員。
76、做對的事情比把事情做對重要。
77、“人”的結(jié)構(gòu)就是相互支撐,“眾”人的事業(yè)需要每個人的參與。
78、競爭頗似打網(wǎng)球,與球藝勝過你的對手比賽,可以提高你的水平。(戲從對手來。)
79、只有不斷找尋機(jī)會的人才會及時把握機(jī)會。
80、你可以選擇這樣的“三心二意”:信心、恒心、決心;創(chuàng)意、樂意。
81、無論才能、知識多么卓著,如果缺乏熱情,則無異紙上畫餅充饑,無補于事。
82、如同磁鐵吸引四周的鐵粉,熱情也能吸引周圍的人,改變周圍的情況。
83、網(wǎng)絡(luò)事業(yè)創(chuàng)造了富裕,又延續(xù)了平等。
84、好的想法是十分錢一打,真正無價的是能夠?qū)崿F(xiàn)這些想法的人。
85、人格的完善是本,財富的確立是末。
86、高峰只對攀登它而不是仰望它的人來說才有真正意義。
87、貧窮是不需要計劃的,致富才需要一個周密的計劃——并去實踐它。
88、智者一切求自己,愚者一切求他人。
89、沒有一種不通過蔑視、忍受和奮斗就可以征服的命運。
90、苦想沒盼頭,苦干有奔頭。
91、當(dāng)一個小小的心念變成成為行為時,便能成了習(xí)慣;從而形成性格,而性格就決定你一生的成敗。
92、窮不一定思變,應(yīng)該是思富思變。
93、自己打敗自己的遠(yuǎn)遠(yuǎn)多于比別人打敗的。
94、如果我們做與不做都會有人笑,如果做不好與做得好還會有人笑,那么我們索性就做得更好,來給人笑吧!
95、這個世界并不是掌握在那些嘲笑者的手中,而恰恰掌握在能夠經(jīng)受得住嘲笑與批評忍不斷往前走的人手中。
96、成功需要成本,時間也是一種成本,對時間的珍惜就是對成本的節(jié)約。
97、行動是治愈恐懼的良藥,而猶豫、拖延將不斷滋養(yǎng)恐懼。
98、投資知識是明智的,投資網(wǎng)絡(luò)中的知識就更加明智。
99、沒有天生的信心,只有不斷培養(yǎng)的信心。
100、顧客后還有顧客,服務(wù)的開始才是銷售的開始。
101、忍別人所不能忍的痛,吃別人所別人所不能吃的苦,是為了收獲得不到的收獲。
102、銷售是從被別人拒絕開始的。
103、好咖啡要和朋友一起品嘗,好機(jī)會也要和朋友一起分享。
104、生命之燈因熱情而點燃,生命之舟因拼搏而前行。
105、擁有夢想只是一種智力,實現(xiàn)夢想才是一種能力。
106、只有一條路不能選擇——那就是放棄的路;只有一條路不能拒絕——那就是成長的路。
107、人的才華就如海綿的水,沒有外力的擠壓,它是絕對流不出來的。流出來后,海綿才能吸收新的源泉。
108、每天早上醒來,你荷包里的最大資產(chǎn)是24個小時——你生命宇宙中尚未制造的材料。
109、如果要挖井,就要挖到水出為止。
110、成功決不喜歡會見懶漢,而是喚醒懶漢。
111、未遭拒絕的成功決不會長久。
112、外在壓力增加時,就應(yīng)增強(qiáng)內(nèi)在的動力。
113、股票有漲有落,然而打著信心標(biāo)志的股票將使你永漲無落。
114、只要我們能夢想的,我們就能實現(xiàn)。
115、凡事要三思,但比三思更重要的是三思而行。
116、做的技藝來自做的過程。
117、成功的信念在人腦中的作用就如鬧鐘,會在你需要時將你喚醒。
118、偉大的事業(yè)不是靠力氣、速度和身體的敏捷完成的,而是靠性格、意志和知識的力量完成的。
119、只有千錘百煉,才能成為好鋼。
120、肉體是精神居住的花園,意志則是這個花園的園丁。意志既能使肉體“貧瘠”下去,又能用勤勞使它“肥沃”起來。
121、對于最有能力的領(lǐng)航人風(fēng)浪總是格外的洶涌。
122、知識給人重量,成就給人光彩,大多數(shù)人只是看到了光彩,而不去稱量重量。
123、最重要的就是不要去看遠(yuǎn)方模糊的,而要做手邊清楚的事。
124、為明天做準(zhǔn)備的最好方法就是集中你所有智慧,所有的熱忱,把今天的工作做得盡善盡美,這就是你能應(yīng)付未來的唯一方法。
125、人性最可憐的就是:我們總是夢想著天邊的一座奇妙的玫瑰園,而不去欣賞今天就開在我們窗口的玫瑰。
126、征服畏懼、建立自信的最快最確實的方法,就是去做你害怕的事,直到你獲得成功的經(jīng)驗。
127、世上最重要的事,不在于我們在何處,而在于我們朝著什么方向走。
128、行動不一定帶來快樂,而無行動則決無快樂。
129、如果我們都去做自己能力做得到的事,我們真會叫自己大吃一驚。
130、失去金錢的人損失甚少,失去健康的人損失極多,失去勇氣的人損失一切。
131、這世上的一切都借希望而完成,農(nóng)夫不會剝下一粒玉米,如果他不曾希望它長成種粒;單身漢不會娶妻,如果他不曾希望有孩子;商人也不會去工作,如果他不曾希望因此而有收益。
132、相信就是強(qiáng)大,懷疑只會抑制能力,而信仰就是力量。
133、那些嘗試去做某事卻失敗的人,比那些什么也不嘗試做卻成功的人不知要好上多少。
134、恐懼自己受苦的人,已經(jīng)因為自己的恐懼在受苦。
135、在真實的生命里,每樁偉業(yè)都由信心開始,并由信心跨出第一步。
136、要冒一險!整個生命就是一場冒險,走得最遠(yuǎn)的人常是愿意去做、愿意去冒險的人。
137、“穩(wěn)妥”之船從未能從岸邊走遠(yuǎn)。
138、目標(biāo)的堅定是性格中最必要的力量源泉之一,也是成功的利器之一。沒有它,天才也會在矛盾無定的迷徑中徒勞無功。
139、在世界的歷史中,每一偉大而高貴的時刻都是某種熱忱的勝利。
140、沒有熱忱,世間便無進(jìn)步。
141、沒有什么事情有象熱忱這般具有傳染性,它能感動頑石,它是真誠的精髓。
142、一個人幾乎可以在任何他懷有無限熱忱的事情上成功。
143、強(qiáng)烈的信仰會贏取堅強(qiáng)的人,然后又使他們更堅強(qiáng)。
144、失敗是什么?沒有什么,只是更走近成功一步;成功是什么?就是走過了所有通向失敗的路,只剩下一條路,那就是成功的路。
145、如果不想做點事情,就甭想到達(dá)這個世界上的任何地方。
146、沒有哪種教育能及得上逆境。
147、一個人除非自己有信心,否則帶給別人信心。
148、障礙與失敗,是通往成功最穩(wěn)靠的踏腳石,肯研究、利用它們,便能從失敗中培養(yǎng)出成功。
149、讓我們將事前的憂慮,換為事前的思考和計劃吧!
150、人生舞臺的大幕隨時都可能拉開,關(guān)鍵是你愿意表演,還是選擇躲避。
151、能把在面前行走的機(jī)會抓住的人,十有八九都會成功。
152、金錢損失了還能挽回,一旦失去信譽就很難挽回。
153、在你不害怕的時間去斗牛,這不算什么;在你害怕時不去斗牛,也沒有什么了不起;只有在你害怕時還去斗牛才是真正了不起。
154、再長的路,一步步也能走完,再短的路,不邁開雙腳也無法到達(dá)。
155、有志者自有千計萬計,無志者只感千難萬難。
156、不大可能的事也許今天實現(xiàn),根本不可能的事也許明天會實現(xiàn)。
157、我成功因為我志在成功!
158、再冷的石頭,坐上三年也會暖。
159、任何業(yè)績的質(zhì)變都來自于量變的積累。
160、平凡的腳步也可以走完偉大的行程。
161、嘲諷是一種力量,消極的力量。贊揚也是一種力量,但卻是積極的力量。
162、誠心誠意,“誠”字的另一半就是成功。
163、領(lǐng)導(dǎo)的速度決定團(tuán)隊的效率。
164、成功呈概率分布,關(guān)鍵是你能不能堅持到成功開始呈現(xiàn)的那一刻。
165、成功與不成功之間有時距離很短——只要后者再向前幾步。
166、空想會想出很多絕妙的主意,但卻辦不成任何事情。
167、自己打敗自己是最可悲的失敗,自己戰(zhàn)勝自己是最可貴的勝利。
168、你可以這樣理解 impossible(不可能)——I’m possible (我是可能的)。
169、為別人鼓掌的人也是在給自己的生命加油。
170、用行動祈禱比用言語更能夠使上帝了解。
171、成功的人是跟別人學(xué)習(xí)經(jīng)驗,失敗的人只跟自己學(xué)習(xí)經(jīng)驗。
172、很多事先天注定,那是“命”;但你可以可以決定怎么面對,那是“運”!
173、不要問別人為你做了什么,而要問你為別人做了什么。
174、成功不是將來才有的,而是從決定去做的那一刻起,持續(xù)累積而成。
175、你一天的愛心可能帶來別人一生的感謝。
176、山不辭土,故能成其高;海不辭水,故能成其深!
posted @
2006-11-17 15:26 xzc 閱讀(286) |
評論 (0) |
編輯 收藏
Parsing XML
或許你想要做的第一件事情就是解析一個某種類型的XML文檔,用dom4j很容易做到。請看下面的示范代碼:
import java.net.URL;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
public class Foo {
public Document parse(URL url) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(url);
return document;
}
}
使用迭代器(Iterators)
我們可以通過多種方法來操作XML文檔,這些方法返回java里標(biāo)準(zhǔn)的迭代器(Iterators)。例如:
public void bar(Document document) throws DocumentException {
Element root = document.getRootElement();
//迭代根元素下面的所有子元素
for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
//處理代碼
}
//迭代根元素下面名稱為"foo"的子元素
for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {
Element foo = (Element) i.next();
//處理代碼
}
// 迭代根元素的屬性attributes)元素
for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
Attribute attribute = (Attribute) i.next();
// do something
}
}
強(qiáng)大的XPath導(dǎo)航
在dom4j中XPath可以表示出在XML樹狀結(jié)構(gòu)中的Document或者任意的節(jié)點(Node)(例如:Attribute,Element 或者 ProcessingInstruction等)。它可以使在文檔中復(fù)雜的操作僅通過一行代碼就可以完成。例如:
public void bar(Document document) {
List list = document.selectNodes( "http://foo/bar" );
Node node = document.selectSingleNode( "http://foo/bar/author" );
String name = node.valueOf( "@name" );
}
如果你想得到一個XHTML文檔中的所有超文本鏈接(hypertext links)你可以使用下面的代碼:
public void findLinks(Document document) throws DocumentException {
List list = document.selectNodes( "http://a/@href" );
for (Iterator iter = list.iterator(); iter.hasNext(); ) {
Attribute attribute = (Attribute) iter.next();
String url = attribute.getValue();
}
}
如果你需要關(guān)于XPath語言的任何幫助,我們強(qiáng)烈推薦這個站點Zvon tutorial他會通過一個一個的例子引導(dǎo)你學(xué)習(xí)。
快速遍歷(Fast Looping)
如果你不得不遍歷一個非常大的XML文檔,然后才去執(zhí)行,我們建議你使用快速遍歷方法(fast looping method),它可以避免為每一個循環(huán)的節(jié)點創(chuàng)建一個迭代器對象,如下所示:
public void treeWalk(Document document) {
treeWalk( document.getRootElement() );
}
public void treeWalk(Element element) {
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
treeWalk( (Element) node );
}
else {
// do something....
}
}
}
生成一個新的XML文檔對象
在dom4j中你可能常常希望用程序生成一個XML文檔對象,下面的程序為你進(jìn)行了示范:
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class Foo {
public Document createDocument() {
Document document = DocumentHelper.createDocument();
Element root = document.addElement( "root" );
Element author1 = root.addElement( "author" )
.addAttribute( "name", "James" )
.addAttribute( "location", "UK" )
.addText( "James Strachan" );
Element author2 = root.addElement( "author" )
.addAttribute( "name", "Bob" )
.addAttribute( "location", "US" )
.addText( "Bob McWhirter" );
return document;
}
}
將一個文檔對象寫入文件中
將一個文檔對象寫入Writer對象的一個簡單快速的途徑是通過write()方法。
FileWriter out = new FileWriter( "foo.xml" );
document.write( out );
如果你想改變輸出文件的排版格式,比如你想要一個漂亮的格式或者是一個緊湊的格式,或者你想用Writer 對象或者OutputStream 對象來操作,那么你可以使用XMLWriter 類。
import org.dom4j.Document;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
public class Foo {
public void write(Document document) throws IOException {
// 寫入文件
XMLWriter writer = new XMLWriter(
new FileWriter( "output.xml" )
);
writer.write( document );
writer.close();
// 以一種優(yōu)雅的格式寫入System.out對象
OutputFormat format = OutputFormat.createPrettyPrint();
writer = new XMLWriter( System.out, format );
writer.write( document );
// 以一種緊湊的格式寫入System.out對象
format = OutputFormat.createCompactFormat();
writer = new XMLWriter( System.out, format );
writer.write( document );
}
}
轉(zhuǎn)化為字符串,或者從字符串轉(zhuǎn)化
如果你有一個文檔(Document)對象或者任何一個節(jié)點(Node)對象的引用(reference),象屬性(Attribute)或者元素(Element),你可以通過asXML()方法把它轉(zhuǎn)化為一個默認(rèn)的XML字符串:
Document document = ...;
String text = document.asXML();
如果你有一些XML內(nèi)容的字符串表示,你可以通過DocumentHelper.parseText()方法將它重新轉(zhuǎn)化為文檔(Document)對象:
String text = "James";
Document document = DocumentHelper.parseText(text);
通過XSLT樣式化文檔(Document)
使用Sun公司提供的JAXP API將XSLT 應(yīng)用到文檔(Document)上是很簡單的。它允許你使用任何的XSLT引擎(例如:Xalan或SAXON等)來開發(fā)。下面是一個使用JAXP創(chuàng)建一個轉(zhuǎn)化器(transformer),然后將它應(yīng)用到文檔(Document)上的例子:
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import org.dom4j.Document;
import org.dom4j.io.DocumentResult;
import org.dom4j.io.DocumentSource;
public class Foo {
public Document styleDocument(
Document document,
String stylesheet
) throws Exception {
// 使用 JAXP 加載轉(zhuǎn)化器
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(
new StreamSource( stylesheet )
);
// 現(xiàn)在來樣式化一個文檔(Document)
DocumentSource source = new DocumentSource( document );
DocumentResult result = new DocumentResult();
transformer.transform( source, result );
// 返回經(jīng)過樣式化的文檔(Document)
Document transformedDoc = result.getDocument();
return transformedDoc;
}
}
原文地址
dom4j下載地址
初次嘗試翻譯,如果有翻譯不妥的地方,希望大家指出來,我們共同進(jìn)步!
謝謝!!
[:)]
posted @
2006-11-17 15:14 xzc 閱讀(438) |
評論 (0) |
編輯 收藏
1. 介紹
1)DOM(JAXP Crimson解析器)
DOM是用與平臺和語言無關(guān)的方式表示XML文檔的官方W3C標(biāo)準(zhǔn)。DOM是以層次結(jié)構(gòu)組織的節(jié)點或信息片斷的集合。這個層次結(jié)構(gòu)允許開發(fā)人員在樹中尋找特定信息。分析該結(jié)構(gòu)通常需要加載整個文檔和構(gòu)造層次結(jié)構(gòu),然后才能做任何工作。由于它是基于信息層次的,因而DOM被認(rèn)為是基于樹或基于對象的。DOM以及廣義的基于樹的處理具有幾個優(yōu)點。首先,由于樹在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對數(shù)據(jù)和結(jié)構(gòu)作出更改。它還可以在任何時候在樹中上下導(dǎo)航,而不是像SAX那樣是一次性的處理。DOM使用起來也要簡單得多。
2)SAX
SAX處理的優(yōu)點非常類似于流媒體的優(yōu)點。分析能夠立即開始,而不是等待所有的數(shù)據(jù)被處理。而且,由于應(yīng)用程序只是在讀取數(shù)據(jù)時檢查數(shù)據(jù),因此不需要將數(shù)據(jù)存儲在內(nèi)存中。這對于大型文檔來說是個巨大的優(yōu)點。事實上,應(yīng)用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比它的替代者DOM快許多。
選擇DOM還是選擇SAX? 對于需要自己編寫代碼來處理XML文檔的開發(fā)人員來說, 選擇DOM還是SAX解析模型是一個非常重要的設(shè)計決策。 DOM采用建立樹形結(jié)構(gòu)的方式訪問XML文檔,而SAX采用的事件模型。
DOM解析器把XML文檔轉(zhuǎn)化為一個包含其內(nèi)容的樹,并可以對樹進(jìn)行遍歷。用DOM解析模型的優(yōu)點是編程容易,開發(fā)人員只需要調(diào)用建樹的指令,然后利用navigation APIs訪問所需的樹節(jié)點來完成任務(wù)。可以很容易的添加和修改樹中的元素。然而由于使用DOM解析器的時候需要處理整個XML文檔,所以對性能和內(nèi)存的要求比較高,尤其是遇到很大的XML文件的時候。由于它的遍歷能力,DOM解析器常用于XML文檔需要頻繁的改變的服務(wù)中。
SAX解析器采用了基于事件的模型,它在解析XML文檔的時候可以觸發(fā)一系列的事件,當(dāng)發(fā)現(xiàn)給定的tag的時候,它可以激活一個回調(diào)方法,告訴該方法制定的標(biāo)簽已經(jīng)找到。SAX對內(nèi)存的要求通常會比較低,因為它讓開發(fā)人員自己來決定所要處理的tag。特別是當(dāng)開發(fā)人員只需要處理文檔中所包含的部分?jǐn)?shù)據(jù)時,SAX這種擴(kuò)展能力得到了更好的體現(xiàn)。但用SAX解析器的時候編碼工作會比較困難,而且很難同時訪問同一個文檔中的多處不同數(shù)據(jù)。
3)JDOM http://www.jdom.org
JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互并且比使用DOM實現(xiàn)更快。由于是第一個Java特定模型,JDOM一直得到大力推廣和促進(jìn)。正在考慮通過“Java規(guī)范請求JSR-102”將它最終用作“Java標(biāo)準(zhǔn)擴(kuò)展”。從2000年初就已經(jīng)開始了JDOM開發(fā)。
JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經(jīng)熟悉這些類的Java開發(fā)者的使用。
JDOM文檔聲明其目的是“使用20%(或更少)的精力解決80%(或更多)Java/XML問題”(根據(jù)學(xué)習(xí)曲線假定為20%)。JDOM對于大多數(shù)Java/XML應(yīng)用程序來說當(dāng)然是有用的,并且大多數(shù)開發(fā)者發(fā)現(xiàn)API比DOM容易理解得多。JDOM還包括對程序行為的相當(dāng)廣泛檢查以防止用戶做任何在XML中無意義的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學(xué)習(xí)DOM或JDOM接口都更有意義的工作。
JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗證輸入XML文檔(盡管它還可以將以前構(gòu)造的DOM表示作為輸入)。它包含一些轉(zhuǎn)換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。JDOM是在Apache許可證變體下發(fā)布的開放源碼。
4)DOM4J http://dom4j.sourceforge.net
雖然DOM4J代表了完全獨立的開發(fā)結(jié)果,但最初,它是JDOM的一種智能分支。它合并了許多超出基本XML文檔表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文檔或流化文檔的基于事件的處理。它還提供了構(gòu)建文檔表示的選項,它通過DOM4J API和標(biāo)準(zhǔn)DOM接口具有并行訪問功能。從2000下半年開始,它就一直處于開發(fā)之中。
為支持所有這些功能,DOM4J使用接口和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復(fù)雜的API的代價,但是它提供了比JDOM大得多的靈活性。
在添加靈活性、XPath集成和對大文檔處理的目標(biāo)時,DOM4J的目標(biāo)與JDOM是一樣的:針對Java開發(fā)者的易用性和直觀操作。它還致力于成為比JDOM更完整的解決方案,實現(xiàn)在本質(zhì)上處理所有Java/XML問題的目標(biāo)。在完成該目標(biāo)時,它比JDOM更少強(qiáng)調(diào)防止不正確的應(yīng)用程序行為。
DOM4J是一個非常非常優(yōu)秀的Java XML API,具有性能優(yōu)異、功能強(qiáng)大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。如今你可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML,特別值得一提的是連Sun的JAXM也在用DOM4J。
2.. 比較
1)DOM4J性能最好,連Sun的JAXM也在用DOM4J。目前許多開源項目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J來讀取XML配置文件。如果不考慮可移植性,那就采用DOM4J.
2)JDOM和DOM在性能測試時表現(xiàn)不佳,在測試10M文檔時內(nèi)存溢出。在小文檔情況下還值得考慮使用DOM和JDOM。雖然JDOM的開發(fā)者已經(jīng)說明他們期望在正式發(fā)行版前專注性能問題,但是從性能觀點來看,它確實沒有值得推薦之處。另外,DOM仍是一個非常好的選擇。DOM實現(xiàn)廣泛應(yīng)用于多種編程語言。它還是許多其它與XML相關(guān)的標(biāo)準(zhǔn)的基礎(chǔ),因為它正式獲得W3C推薦(與基于非標(biāo)準(zhǔn)的Java模型相對),所以在某些類型的項目中可能也需要它(如在JavaScript中使用DOM)。
3)SAX表現(xiàn)較好,這要依賴于它特定的解析方式-事件驅(qū)動。一個SAX檢測即將到來的XML流,但并沒有載入到內(nèi)存(當(dāng)然當(dāng)XML流被讀入時,會有部分文檔暫時隱藏在內(nèi)存中)。
3. 四種xml操作方式的基本使用方法
xml文件:
<?xml version="1.0" encoding="GB2312"?>
<RESULT>
<VALUE>
<NO>A1234</NO>
<ADDR>四川省XX縣XX鎮(zhèn)XX路X段XX號</ADDR>
</VALUE>
<VALUE>
<NO>B1234</NO>
<ADDR>四川省XX市XX鄉(xiāng)XX村XX組</ADDR>
</VALUE>
</RESULT>
1)DOM
import java.io.*;
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
public class MyXMLReader{
public static void main(String arge[]){
long lasting =System.currentTimeMillis();
try{
File f=new File("data_10k.xml");
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc = builder.parse(f);
NodeList nl = doc.getElementsByTagName("VALUE");
for (int i=0;i<nl.getLength();i++){
System.out.print("車牌號碼:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue());
System.out.println("車主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue());
}
}catch(Exception e){
e.printStackTrace();
}
2)SAX
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
public class MyXMLReader extends DefaultHandler {
java.util.Stack tags = new java.util.Stack();
public MyXMLReader() {
super();
}
public static void main(String args[]) {
long lasting = System.currentTimeMillis();
try {
SAXParserFactory sf = SAXParserFactory.newInstance();
SAXParser sp = sf.newSAXParser();
MyXMLReader reader = new MyXMLReader();
sp.parse(new InputSource("data_10k.xml"), reader);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("運行時間:" + (System.currentTimeMillis() - lasting) + "毫秒");}
public void characters(char ch[], int start, int length) throws SAXException {
String tag = (String) tags.peek();
if (tag.equals("NO")) {
System.out.print("車牌號碼:" + new String(ch, start, length));
}
if (tag.equals("ADDR")) {
System.out.println("地址:" + new String(ch, start, length));
}
}
public void startElement(String uri,String localName,String qName,Attributes attrs) {
tags.push(qName);}
}
3) JDOM
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
public class MyXMLReader {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(new File("data_10k.xml"));
Element foo = doc.getRootElement();
List allChildren = foo.getChildren();
for(int i=0;i<allChildren.size();i++) {
System.out.print("車牌號碼:" + ((Element)allChildren.get(i)).getChild("NO").getText());
System.out.println("車主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText());
}
} catch (Exception e) {
e.printStackTrace();
}
}
4)DOM4J
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.*;
public class MyXMLReader {
public static void main(String arge[]) {
long lasting = System.currentTimeMillis();
try {
File f = new File("data_10k.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
Element foo;
for (Iterator i = root.elementIterator("VALUE"); i.hasNext();) {
foo = (Element) i.next();
System.out.print("車牌號碼:" + foo.elementText("NO"));
System.out.println("車主地址:" + foo.elementText("ADDR"));
}
} catch (Exception e) {
e.printStackTrace();
}
}
轉(zhuǎn)自:http://blog.dl.net.cn/xd/3/archives/2005/15.html
posted @
2006-11-17 15:01 xzc 閱讀(373) |
評論 (0) |
編輯 收藏
『本文地址:
http://v2.djasp.net/Static/ie/1147.stm 』
1.文檔對象模型(DOM)
DOM是HTML和XML文檔的編程基礎(chǔ),它定義了處理執(zhí)行文檔的途徑。
編程者可以使用DOM增加文檔、定位文檔結(jié)構(gòu)、填加修改刪除文檔元素。W3C的重要目標(biāo)是把利用DOM提供一個使用于多個平臺的編程接口。W3C DOM被設(shè)計成適合多個平臺,可使用任意編程語言實現(xiàn)的方法。
2.節(jié)點接口
XML parser用來裝載XML文檔到緩存中,文檔裝載時,可以使用DOM進(jìn)行檢索和處理。DOM采用樹形結(jié)構(gòu)表示 XML文檔,文檔元素是樹的最高階層,該元素有一個或多個孩子節(jié)點用來表示樹的分枝。
節(jié)點接口程序通常用來讀和寫XML節(jié)點樹中的個別元素,文檔元素的孩子節(jié)點屬性可以用來構(gòu)造個別元素節(jié)點。XML parser用來證明Web中的DOM支持遍歷節(jié)點樹的所有函數(shù),并可通過它們訪問節(jié)點和及其屬性、插入刪除節(jié)點、轉(zhuǎn)換節(jié)點樹到XML中。
所有Microsoft XML parser函數(shù)得到W3C XML DOM的正式推薦,除了load和loadXML函數(shù)(正式的DOM不包括標(biāo)準(zhǔn)函數(shù)loading XML文檔)。有13個節(jié)點類型被Microsoft XML parser支持,下面列出常用節(jié)點:
節(jié)點類型 例子Document type <!DOCTYPE food SYSTEM "food.dtd">
Processing instruction <?xml version="1.0"?>
Element <drink type="beer">Carlsberg</drink>
Attribute type="beer"
Text Carlsberg
3.使用XML parser
為了更加熟練的處理XML文檔,必須使用XML parser。Microsoft XML parser是IIS5.0所帶的一個COM組件,一旦安裝了IIS5.0,parser可以利用HTML文檔和ASP文件中的腳本。
Microsoft XMLDOM parser支持以下編程模式:
----支持 JavaScript, VBScript, Perl, VB, Java, C++ 等等
----支持 W3C XML 1.0 和 XML DOM
----支持 DTD 和 validation
如果使用IE5.0中的JavaScript,可以使用下面的XML文檔對象:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
如果使用VBScript,可以使用下面的XML文檔對象:
set xmlDoc = CreateObject("Microsoft.XMLDOM")
如果使用ASP,可以使用下面的XML文檔對象:
set xmlDoc = Server.CreateObject("Microsoft.XMLDOM")
4.裝載一個XML文件到parser中下面的代碼裝載存在的XML文檔進(jìn)入XML parser:
<script language="JavaScript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
// ....... processing the document goes here
</script>
第一行腳本增加了一個Microsoft XML parser實例,第三行裝載名為”note.xml”的XML文檔進(jìn)入parser中。第二行保證文檔裝載完成以后parser進(jìn)行下一步工作。
5. parseError對象
打開XMl文檔時,XML Parser產(chǎn)生錯誤代碼,并存在parseError對象中,包括錯誤代碼、錯誤文本和錯誤行號,等信息。
6.文件錯誤
下面的例子將試圖裝載一個不存在的文件,然后產(chǎn)生相應(yīng)的錯誤代碼:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("ksdjf.xml")
document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)
7.XML錯誤
下面使用不正確的格式裝載XMl文檔,
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note_error.xml")
document.write("<br>Error Code: ")
document.write(xmlDoc.parseError.errorCode)
document.write("<br>Error Reason: ")
document.write(xmlDoc.parseError.reason)
document.write("<br>Error Line: ")
document.write(xmlDoc.parseError.line)
8. parseError屬性
屬性描述:
errorCode 返回長整型錯誤代碼
reason 返回字符串型錯誤原因
line 返回長整型錯誤行號
linePos 返回長整型錯誤行號位置
srcText 返回字符串型產(chǎn)生錯誤原因
url 返回url裝載文檔指針
filePos 返回長整型錯誤文件位置
9.遍歷節(jié)點樹
一種通用的析取XML文檔的方法是遍歷節(jié)點樹和它的元素值。
www.djasp.Net
點擊設(shè)計是一個專業(yè)的網(wǎng)頁編程資訊站點,歡迎訪問!
盜用它人網(wǎng)站上的內(nèi)容可恥,您查看的站點未經(jīng)點擊設(shè)計許可,大量盜用點擊設(shè)計網(wǎng)站上的內(nèi)容,,請關(guān)閉該網(wǎng)站然后訪問點擊設(shè)計官方網(wǎng)址:http://www.djasp.net/
下面是使用VBScript寫的遍歷節(jié)點樹的程序代碼:
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
for each x in xmlDoc.documentElement.childNodes
document.write(x.nodename)
document.write(": ")
document.write(x.text)
next10.為XML文件提供HTML格式
XML的一個優(yōu)點是把HTML文檔和它的數(shù)據(jù)分離開。通過使用瀏覽器中的XML parser,HTML頁面可以被構(gòu)造成靜態(tài)文檔,通過JavaScript提供動態(tài)數(shù)據(jù)。下面的例子使用JavaScript讀取XML文檔,寫XML數(shù)據(jù)成HTML元素:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
nodes = xmlDoc.documentElement.childNodes
to.innerText = nodes.item(0).text
from .innerText = nodes.item(1).text
header.innerText = nodes.item(2).text
body.innerText = nodes.item(3).text
11.通過名稱訪問XML元素
下面的例子使用JavaScript讀取XML文檔,寫XML數(shù)據(jù)成HTML元素:
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
document.write(xmlDoc.getElementsByTagName("from").item(0).text)
12.裝載純XML文本進(jìn)入parser
下面的代碼裝載文本字符串進(jìn)入XML parser :
<script language="JavaScript">
var text="<note>"
text=text+"<to>Tove</to><from>Jani</from>"
text=text+"<heading>Reminder</heading>"
text=text+"<body>Don't forget me this weekend!</body>"
text=text+"</note>"
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.loadXML(text)
// ....... processing the document goes here
</script>
13.裝載XML進(jìn)入Parser
<html>
<body>
<script language="javascript">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
document.write("The first XML element in the file contains: ")
document.write(xmlDoc.documentElement.childNodes.item(0).text)
</script>
</body>
</html>
遍歷XML節(jié)點樹:
<html>
<body>
<script language="VBScript">
txt="<h1>Traversing the node tree</h1>"
document.write(txt)
set xmlDoc=CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
for each x in xmlDoc.documentElement.childNodes
document.write("<b>" & x.nodename & "</b>")
document.write(": ")
document.write(x.text)
document.write("<br>")
next
</script>
</body>
</html>
裝載XML 進(jìn)入 HTML
<html>
<head>
<script language="JavaScript"
for="window" event="onload">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
xmlDoc.async="false"
xmlDoc.load("note.xml")
nodes = xmlDoc.documentElement.childNodes
to.innerText = nodes.item(0).text
from.innerText = nodes.item(1).text
header.innerText = nodes.item(2).text
body.innerText = nodes.item(3).text
</script>
<title>HTML using XML data</title>
</head>
<body bgcolor="yellow">
<h1>Refsnes Data Internal Note</h1>
<b>To: </b><span id="to"></span>
<br>
<b>From: </b><span id="from"></span>
<hr>
<b><span id="header"></span></b>
<hr>
<span id="body"></span>
</body>
</html>
posted @
2006-11-16 12:28 xzc 閱讀(1051) |
評論 (0) |
編輯 收藏
『本文地址:
http://v3.djasp.net/Static/vb/1949.stm 』
我的xml文件Login.xml如下.
<?xml?version="1.0"?encoding="utf-8"??>
<Login>
????<Character>
????????<C?Text="熱血"?Value="0"></C>
????????<C?Text="弱氣"?Value="1"></C>
????????<C?Text="激情"?Value="2"></C>
????????<C?Text="冷靜"?Value="3"></C>
????????<C?Text="冷酷"?Value="4"></C>
????</Character>
????<Weapon>
????????<W?Text="光束劍"?Value="0"></W>
????????<W?Text="光束配刀"?Value="1"></W>
????</Weapon>
????<EconomyProperty>
????????<P?Text="平均型"?Value="0"></P>
????????<P?Text="重視攻擊"?Value="1"></P>
????????<P?Text="重視敏捷"?Value="2"></P>
????????<P?Text="重視防御"?Value="3"></P>
????????<P?Text="重視命中"?Value="4"></P>
????</EconomyProperty>
</Login>
現(xiàn)在我需要對這個xml文件的內(nèi)容進(jìn)行操作.
首先,我們需要加載這個xml文件,js中加載xml文件,是通過XMLDOM來進(jìn)行的.
//?加載xml文檔
loadXML????=?function(xmlFile)
{
????var?xmlDoc;
????if(window.ActiveXObject)
????{
????????xmlDoc????=?new?ActiveXObject(’Microsoft.XMLDOM’);
????????xmlDoc.async????=?false;
????????xmlDoc.load(xmlFile);
????}
????else?if?(document.implementation&&document.implementation.createDocument)
????{
????????xmlDoc????=?document.implementation.createDocument(’’,?’’,?null);
????????xmlDoc.load(xmlFile);
????}
????else
????{
????????return?null;
????}
????
????return?xmlDoc;
}
xml文件對象出來了,?接下去我就要對這個文檔進(jìn)行操作了.
比如說,我們現(xiàn)在需要得到節(jié)點Login/Weapon/W的第一個節(jié)點的屬性,那么我們可以如下進(jìn)行.
本文由 點擊設(shè)計 http://www.djasp.Net 收集整理。謝絕無聊之人轉(zhuǎn)載!
//?首先對xml對象進(jìn)行判斷
checkXMLDocObj????=?function(xmlFile)
{
????var?xmlDoc????=?loadXML(xmlFile);
????if(xmlDoc==null)
????{
????????alert(’您的瀏覽器不支持xml文件讀取,于是本頁面禁止您的操作,推薦使用IE5.0以上可以解決此問題!’);
????????window.location.href=’/Index.aspx’;
????}
????
????return?xmlDoc;
}
★點擊設(shè)計★ http://www.djasp.Net 全力打造WEB技術(shù)站點,歡迎大家訪問!
//?然后開始獲取需要的Login/Weapon/W的第一個節(jié)點的屬性值
var?xmlDoc????=?checkXMLDocObj(’/EBS/XML/Login.xml’);
var?v????=?xmlDoc.getElementsByTagName(’Login/Weapon/W’)[0].childNodes.getAttribute(’Text’)
而我在我的程序中的寫法是這樣子的,當(dāng)然我在程序中的寫法是已經(jīng)應(yīng)用到實際中的了.一并給出來,以供查看
本文由 ★點擊設(shè)計★ http://www.djasp.Net 收集整理。謝絕無聊之人轉(zhuǎn)載!
initializeSelect????=?function(oid,?xPath)
{
????var?xmlDoc????=?checkXMLDocObj(’/EBS/XML/Login.xml’);
????var?n;
????var?l;
????var?e????=?$(oid);
????if(e!=null)
????{
????????n????=?xmlDoc.getElementsByTagName(xPath)[0].childNodes;
????????l????=?n.length;
????????for(var?i=0;?i<l;?i++)
????????{
????????????var?option????=?document.createElement(’option’);
????????????option.value????=?n[i].getAttribute(’Value’);
????????????option.innerHTML????=?n[i].getAttribute(’Text’);
????????????e.appendChild(option);
????????}
????}
}
上面的訪問代碼中,我們是通過xmlDoc.getElementsByTagName(xPath)來進(jìn)行的.
還可以通過xmlDoc.documentElement.childNodes(1)..childNodes(0).getAttribute(’Text’)進(jìn)行訪問.
一些常用方法:
xmlDoc.documentElement.childNodes(0).nodeName,可以得到這個節(jié)點的名稱.
xmlDoc.documentElement.childNodes(0).nodeValue,可以得到這個節(jié)點的值.?這個值是來自于這樣子的xml格式:<a>b</b>,?于是可以得到b這個值.
xmlDoc.documentElement.childNodes(0).hasChild,可以判斷是否有子節(jié)點
盜版它人網(wǎng)站的內(nèi)容可恥,您查看的內(nèi)容來源于★點擊設(shè)計★www.djasp.Net
根據(jù)我的經(jīng)驗,最好是使用getElementsByTagName(xPath)的方法對節(jié)點進(jìn)行訪問,因為這樣子可以直接通過xPath來定位節(jié)點,這樣子會有更好的性能.
posted @
2006-11-16 12:25 xzc 閱讀(324) |
評論 (0) |
編輯 收藏