隨筆-314  評論-209  文章-0  trackbacks-0
           
          ?

          作為一名專欄作家,我的目標并不是報導新聞、或是向讀者提供一份不斷更新的專家投資建議。相反我認為,有些金融投資指南是放之四海皆準的,因此我會反復加以琢磨。

          其中有些投資建議是我經常掛在嘴邊的,而另一些是最近突然閃現在我的腦海里。想更好地管理你的資金嗎?我在這里向您提供九條最重要的理財法則。

          1)勇于說“不”

          為了成功地進行儲蓄和投資,沒什么比自律更重要了。

          這意味著看準一些股票、債券和貨幣市場基金后進行投資,然后堅持持有這一投資組合,無論動蕩的市場是多么令人煩惱不安,也無論你是多么想購買最新的熱門股。

          更重要的是,你不能輕易自滿,因此可進行適量的定期儲蓄。

          2)別患上享樂適應癥

          花錢并不能給你帶來快樂。然而許多人都這么做,于是他們一生都要面對高額的信用卡帳單,以及失望的情緒。

          知道這個心理循環嗎?你看中了某件商品,然后認定非要得到它不可,于是付帳。然而幾周或幾個月之后,你就把這件事忘得一干二凈,又開始新的物質追求了。

          學者們把這種現象稱為“快樂水車”或“享樂適應癥”(hedonic treadmill)。從中可以吸取的教訓是什么呢?如果你想得到快樂,別到購物中心去尋找,那里是找不到的。

          3)我們就是市場

          盡管大家都在談論跑贏大市,但事實上我們的前進道路上存在著一個不可逾越的障礙。

          不可能所有的人都跑贏大市,因為我們本身就是市場的組成部份。如果有人跑贏大市,那么必然有人被市場打敗。

          實際上,如果再算上投資成本,能跑贏大市的投資者就寥寥無幾了,而大多數投資者都落后于市場平均水平。

          4)誰分了你的錢

          還有一點你得記住,不管你是否樂意,你還有兩位投資伙伴:華爾街和收稅員。你們三個人共同分配你的投資收益。

          想自己多留一點,給華爾街和收稅員少點?最好的辦法是降低投資成本,同時最大限度地利用避稅的退休金帳戶。

          5)請專家幫忙

          十年前,我認為大多數投資者有能力自己進行投資。如今,我可不這么想了。

          看上去大多數投資者是沒有時間、興趣和精力親自進行成功的投資的。

          不過遺憾的是,即使你聘請了經紀人或是理財規劃師,你的感覺也好不了多少。許多顧問收費昂貴,但他們自己也只有少得可憐的正規理財教育,因此你在挑選顧問的時候得特別小心。

          6)別落在后面

          當專家們討論投資多樣化的時候,他們會指出,購買各種投資產品能降低投資風險,因為其中一些投資會帶來收益,而另一些會出現虧損。

          但問題在于:每當我們面臨重大金融危機的時候,投資多樣化──特別在全球股票市場上進行多樣化的投資──常常被證明是起不了什么作用的,因為所有的股票都在暴跌。

          不過我覺得這種想法忽略了關鍵要點。即使美國股票和海外股票一同漲跌,它們的年投資回報還是存在著驚人的差距。那些僅僅投資于一個市場的投資者們可能會面臨較長的低迷時期。

          此外,投資多樣化也不僅僅是為了減少投資組合的短期波動。你還想限制金融災難給你帶來的損失,無論是因為政局動蕩而導致金融市場出現混亂,還是金融市場本身出現崩潰,例如上世紀九十年代的日本市場。

          7)家庭很重要

          孩子是你的繼承人。他們將繼承你的資產,也極有可能接受你的理財觀念。

          你的家庭是你最大的資產,同時也是最大的負債。如果你的孩子或父母陷入了財務困境,你將伸出援手。同樣,在你碰到困難時,他們也會伸出援手。

          記住這些很重要。可以與你的父母談談他們的財務狀況,也可以教導孩子們如何理財。

          想想你自己是如何管理財產的吧,特別是想想當出現問題時,它們會給家庭帶來什么影響。

          8)進行長期投資

          如果你年紀輕輕就離開人世,這對你的配偶和孩子來說是沉重的打擊。但是請別忽略了其他風險:如果你活得遠比預計的長呢?

          許多退休人士非常擔心英年早逝,因此他們急著申請社會保障金,而拒絕購買終生年金。如果你確信自己和配偶生命短暫的話,采取這樣的策略是正確的,至少你活著的時候手頭充裕。

          然而,如果你早早地領取了社會保障金,而且也不購買年金,但實際卻活得很長呢?那你就得一分一厘地算著花錢了。

          9)最后一根稻草

          在金融市場開盤的交易日里,我通常每隔幾小時就會查看與通貨膨脹掛鉤的國債的收益率。

          在我看來,與通貨膨脹掛鉤的國債可作為其他所有投資的基準。如果我購買了十年期通貨膨脹掛鉤國債,我在今后十年內獲得的投資收益將比通貨膨脹率高2.3個百分點。

          除非我確信其他投資的表現優于這一基準,否則我將繼續持有十年期通貨膨脹掛鉤國債。在我看來,這項投資是我的最后一根救命稻草。

          posted @ 2006-12-14 13:07 xzc 閱讀(229) | 評論 (0)編輯 收藏
          版權所有,轉載請注明,來自www.jialing.net

          ??? Ajax(Asynchronous JavaScript and XML)說到底就是一種瀏覽器異步讀取服務器上XML內容的技術。現在的技術凡是跟XML扯上關系,再加上個概念做幌子,就像金裝了一樣,拽得不行。門外 的人看得很是熱鬧,門里的人搖搖頭不外如是。XML呢,跨平臺的新潮語言?其實XML=TXT。XML只是符合很多規范的文本。它本身什么都不是,只是保 存字符的文件。而瀏覽器異步讀取的只是服務器上的文本內容,所以在Ajax開發時完全不必拘泥于XML。[版權所有,www.jialing.net]


          • JSON的來歷

          ???? XML 的作用是格式化數據內容。如果我們不用XML還有什么更好的方法嗎?這個答案是JSON。介紹JSON之前我先介紹一下JavaScript這門腳本語 言。腳本語言自身有動態執行的天賦。即我們可以把想要執行的語句放在字符串里,通過eval()這個動態執行函數來執行。字符串里的內容會像我們寫的腳本 一樣被執行。
          示例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方法就能解析了?對于解析復雜的XML,這樣的效率是多么大的提高啊!
          ??? 現在就來告訴你什么是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"
          ?}
          ]

          ??? 簡 單的不只是表達上,最重要的是可以丟棄讓人暈頭轉向的DOM解析了。因為只要符合JavaScript的聲明規范,JavaScrip會自動幫你解析好 的。Ajax中使用JSON的基本方法是前臺載入后臺聲明JavaScript對象的字符串,用eval方法來將它轉為實際的對象,最后通過 DHTML更新頁面信息。
          • JSON的格式

          JSON的基本格式如下,圖片來自json.org:
          對象是屬性、值對的集合。一個對象的開始于"{",結束于"}"。每一個屬性名和值間用":"提示,屬性間用","分隔。
          object.gif


          數組是有順序的值的集合。一個數組開始于"[",結束于"]",值之間用","分隔。
          array.gif


          值可以是引號里的字符串、數字、true、false、null,也可以是對象或數組。這些結構都能嵌套。
          value.gif


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


          數字的定義也和C或Java基本一致。
          number.gif


          • JSON VS XML

          可讀性
          JSON和XML的可讀性可謂不相上下,一邊是建議的語法,一邊是規范的標簽形式,很難分出勝負。

          可擴展性

          XML天生有很好的擴展性,JSON當然也有,沒有什么是XML能擴展,JSON不能的。

          編碼難度
          XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的編碼明顯比XML容易許多,即使不借助工具也能寫出JSON的代碼,可是要寫好XML就不太容易了。

          解碼難度
          XML的解析得考慮子節點父節點,讓人頭昏眼花,而JSON的解析難度幾乎為0。這一點XML輸的真是沒話說。

          流行度

          XML已經被業界廣泛的使用,而JSON才剛剛開始,但是在Ajax這個特定的領域,未來的發展一定是XML讓位于JSON。到時Ajax應該變成Ajaj(Asynchronous JavaScript and JSON)了。

          [版權所有,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 閱讀(148) | 評論 (0)編輯 收藏
          世界商業報道ICXO.COM ( 日期:2006-11-24 11:00)
          上海的一個普通報販在日常經營中發現,很多人對高檔雜志有大量的閱讀需求,但往往因為動輒幾十元的零售價格望而卻步。于是,他自創了一套嶄新的經營模式,發展會員制將雜志租給客戶,每個客戶每月交30元會費和20元押金,就可以不斷租雜志回家看。?
          ?
          ??? 很快發展了幾百名會員,測算下來他一個月能掙到8000元,收入水平遠遠超過了同行。

            這個在市井街頭上演的真實故事近日通過上海某投資管理公司老總的個人博客在網上廣泛流傳,成為大家津津樂道的話題。看完這個故事,很多人或許都會想,同樣都是賣書報雜志的,為什么差別會那么大呢?

            這個小販的故事,給我們提出了一個命題,在給定的外部環境、產業空間、成本產出比的條件下,如何獲得超過同行業平均水平的回報?在這個案例中,報販的選擇是改變商業模式,將原有的終端書報發行模式從“零售”改變為“出租”,從而將獲利機制中的“銷售利潤”轉換成“出租利潤”。由于每個報攤本來每月就有冗余產品的沉淀,出租成本幾乎為零,而市場吸引力又遠大于銷售,因此具備了成功的基礎。此外,由于每個客戶還要交20元押金,這樣上百人的押金又成為報販手中的一筆可流動資金,相當于無息貸款。用這筆錢可以繼續投入運營,比如根據客戶需求引進品種更多的書報商品,擴大自己的產品競爭力。

            很多人或許會想,這樣模式設計并不難,為什么只有這個報販做成了呢?除了人家腳踏實地敢于實踐之外,可能還有細節方面不為人知的控制能力。網文雖未對此作更多描述,但我們可以設想,比如他可能會向客戶推薦介紹近期的熱點事件、精彩新聞,提供信息增值服務,他還可能會用短信提醒一些平時太忙的客戶他要的雜志到了,提供“閱讀小秘書”之類的服務。類似的這些增值服務,都可以提高“出租”模式的核心競爭力,讓客戶得到更多回報,從而保證了新商業模式的運行。

            從為微軟MBA上課的出租車司機,到月入8000的報販,他們都在做一件很多人都在做的普通事情上,走出了自己的新路,也獲得了超過他人的回報。比起深奧的教科書,這樣的民間智慧或許是大多數平凡的創業者更需要學習的。

            最近,單位附近一家飯店生意火爆,原因之一是推出了一項別人沒有的簡單優惠。這家飯店規定,等候20分鐘以上的顧客可以全單打八折,等候10分鐘的可以打九折,而在晚上6點半以前離開飯店的客人也可以打八折。如此一來,餐桌的翻臺率大大提高,愿意等的人數量也大大增加,小小的折扣杠桿為這家店撬動了更大的市場。

            來自草根的管理智慧到處都是,只需要我們睜大眼睛。

          posted @ 2006-11-27 08:59 xzc 閱讀(265) | 評論 (0)編輯 收藏
          中文資源轉換成utf-8編碼
          native2ascii -encoding utf-8 project.properties.GBK project.properties

          utf-8編碼格式的文件轉換成原來的格式
          native2ascii -reverse -encoding utf-8 project.properties project.properties.GBK
          posted @ 2006-11-21 14:54 xzc 閱讀(518) | 評論 (1)編輯 收藏
               摘要: 譯者:Flyingis譯文鏈接:http://www.aygfsteel.com/flyingis/archive/2006/11/18/81898.html???????????? http://gis.javaeye.com/blog/34853原文鏈接:http://getahead.ltd.uk/dwr/server/servlet翻譯目錄:http://www.aygfsteel.com/f...  閱讀全文
          posted @ 2006-11-19 13:50 xzc 閱讀(361) | 評論 (0)編輯 收藏
          1、每一個成功者都有一個開始。勇于開始,才能找到成功的路。
          2、世界會向那些有目標和遠見的人讓路(馮兩努——香港著名推銷商)
          3、造物之前,必先造人。
          4、與其臨淵羨魚,不如退而結網。
          5、若不給自己設限,則人生中就沒有限制你發揮的藩籬。
          6、賺錢之道很多,但是找不到賺錢的種子,便成不了事業家。
          7、蟻穴雖小,潰之千里。
          8、最有效的資本是我們的信譽,它24小時不停為我們工作。
          9、絆腳石乃是進身之階。
          10、銷售世界上第一號的產品——不是汽車,而是自己。在你成功地把自己推銷給別人之前,你必須百分之百的把自己推銷給自己。
          11、即使爬到最高的山上,一次也只能腳踏實地地邁一步。
          12、積極思考造成積極人生,消極思考造成消極人生。
          13、人之所以有一張嘴,而有兩只耳朵,原因是聽的要比說的多一倍。
          14、別想一下造出大海,必須先由小河川開始。
          15、有事者,事竟成;破釜沉舟,百二秦關終歸楚;苦心人,天不負;臥薪嘗膽,三千越甲可吞吳。
          16、你的臉是為了呈現上帝賜給人類最貴重的禮物——微笑,一定要成為你工作最大的資產。
          17、以誠感人者,人亦誠而應。
          18、世上并沒有用來鼓勵工作努力的賞賜,所有的賞賜都只是被用來獎勵工作成果的。
          19、即使是不成熟的嘗試,也勝于胎死腹中的策略。
          20、積極的人在每一次憂患中都看到一個機會,而消極的人則在每個機會都看到某種憂患。
          21、出門走好路,出口說好話,出手做好事。
          22、旁觀者的姓名永遠爬不到比賽的計分板上。
          23、上帝助自助者。
          24、怠惰是貧窮的制造廠。
          25、莫找借口失敗,只找理由成功。(不為失敗找理由,要為成功找方法)
          26、如果我們想要更多的玫瑰花,就必須種植更多的玫瑰樹。
          27、偉人之所以偉大,是因為他與別人共處逆境時,別人失去了信心,他卻下決心實現自己的目標。
          28、世上沒有絕望的處境,只有對處境絕望的人。
          29、回避現實的人,未來將更不理想。
          30、先知三日,富貴十年。
          31、當你感到悲哀痛苦時,最好是去學些什么東西。學習會使你永遠立于不敗之地。
          32、偉人所達到并保持著的高處,并不是一飛就到的,而是他們在同伴們都睡著的時候,一步步艱辛地向上攀爬的。
          33、世界上那些最容易的事情中,拖延時間最不費力。
          34、堅韌是成功的一大要素,只要在門上敲得夠久、夠大聲,終會把人喚醒的。
          35、夫婦一條心,泥土變黃金。
          36、人之所以能,是相信能。
          37、沒有口水與汗水,就沒有成功的淚水。
          38、一個有信念者所開發出的力量,大于99個只有興趣者。
          39、忍耐力較諸腦力,尤勝一籌。
          40、環境不會改變,解決之道在于改變自己。
          41、兩粒種子,一片森林。
          42、每一發奮努力的背后,必有加倍的賞賜。
          43、如果你希望成功,以恒心為良友,以經驗為參謀,以小心為兄弟,以希望為哨兵。
          44、大多數人想要改造這個世界,但卻罕有人想改造自己。
          45、未曾失敗的人恐怕也未曾成功過。
          46、人生偉業的建立 ,不在能知,乃在能行。
          47、挫折其實就是邁向成功所應繳的學費。
          48、任何的限制,都是從自己的內心開始的。
          49、忘掉失敗,不過要牢記失敗中的教訓。
          50、不是境況造就人,而是人造就境況。
          51、含淚播種的人一定能含笑收獲。
          52、靠山山會倒,靠水水會流,靠自己永遠不倒。
          53、欲望以提升熱忱,毅力以磨平高山。
          54、只要路是對的,就不怕路遠。
          55、一滴蜂蜜比一加侖膽汁能夠捕到更多的蒼蠅。
          56、真心的對別人產生點興趣,是推銷員最重要的品格。
          57、自古成功在嘗試。
          58、一個能從別人的觀念來看事情,能了解別人心靈活動的人,永遠不必為自己的前途擔心。
          59、當一個人先從自己的內心開始奮斗,他就是個有價值的人。
          60、生命對某些人來說是美麗的,這些人的一生都為某個目標而奮斗。
          61、推銷產品要針對顧客的心,不要針對顧客的頭。
          62、沒有人富有得可以不要別人的幫助,也沒有人窮得不能在某方面給他人幫助。
          63、凡真心嘗試助人者,沒有不幫到自己的。
          64、積極者相信只有推動自己才能推動世界,只要推動自己就能推動世界。
          65、每一日你所付出的代價都比前一日高,因為你的生命又消短了一天,所以每一日你都要更積極。 今天太寶貴,不應該為酸苦的憂慮和辛澀的悔恨所銷蝕,抬起下巴,抓住今天,它不再回來。
          66、一個人最大的破產是絕望,最大的資產是希望。
          67、行動是成功的階梯,行動越多,登得越高。
          68、環境永遠不會十全十美,消極的人受環境控制,積極的人卻控制環境。
          69、事實上,成功僅代表了你工作的1%,成功是99%失敗的結果。
          70、不要等待機會,而要創造機會。
          71、成功的法則極為簡單,但簡單并不代表容易。
          72、如果寒暄只是打個招呼就了事的話,那與猴子的呼叫聲有什么不同呢?事實上,正確的寒暄必須在短短一句話中明顯地表露出你他的關懷。
          73、昨晚多幾分鐘的準備,今天少幾小時的麻煩。
          74、拿望遠鏡看別人,拿放大鏡看自己。
          75、使用雙手的是勞工,使用雙手和頭腦的舵手,使用雙手、頭腦與心靈的是藝術家,只有合作雙手、頭腦、心靈再加上雙腳的才是推銷員。
          76、做對的事情比把事情做對重要。
          77、“人”的結構就是相互支撐,“眾”人的事業需要每個人的參與。
          78、競爭頗似打網球,與球藝勝過你的對手比賽,可以提高你的水平。(戲從對手來。)
          79、只有不斷找尋機會的人才會及時把握機會。
          80、你可以選擇這樣的“三心二意”:信心、恒心、決心;創意、樂意。
          81、無論才能、知識多么卓著,如果缺乏熱情,則無異紙上畫餅充饑,無補于事。
          82、如同磁鐵吸引四周的鐵粉,熱情也能吸引周圍的人,改變周圍的情況。
          83、網絡事業創造了富裕,又延續了平等。
          84、好的想法是十分錢一打,真正無價的是能夠實現這些想法的人。
          85、人格的完善是本,財富的確立是末。
          86、高峰只對攀登它而不是仰望它的人來說才有真正意義。
          87、貧窮是不需要計劃的,致富才需要一個周密的計劃——并去實踐它。
          88、智者一切求自己,愚者一切求他人。
          89、沒有一種不通過蔑視、忍受和奮斗就可以征服的命運。
          90、苦想沒盼頭,苦干有奔頭。
          91、當一個小小的心念變成成為行為時,便能成了習慣;從而形成性格,而性格就決定你一生的成敗。
          92、窮不一定思變,應該是思富思變。
          93、自己打敗自己的遠遠多于比別人打敗的。
          94、如果我們做與不做都會有人笑,如果做不好與做得好還會有人笑,那么我們索性就做得更好,來給人笑吧!
          95、這個世界并不是掌握在那些嘲笑者的手中,而恰恰掌握在能夠經受得住嘲笑與批評忍不斷往前走的人手中。
          96、成功需要成本,時間也是一種成本,對時間的珍惜就是對成本的節約。
          97、行動是治愈恐懼的良藥,而猶豫、拖延將不斷滋養恐懼。
          98、投資知識是明智的,投資網絡中的知識就更加明智。
          99、沒有天生的信心,只有不斷培養的信心。
          100、顧客后還有顧客,服務的開始才是銷售的開始。
          101、忍別人所不能忍的痛,吃別人所別人所不能吃的苦,是為了收獲得不到的收獲。
          102、銷售是從被別人拒絕開始的。
          103、好咖啡要和朋友一起品嘗,好機會也要和朋友一起分享。
          104、生命之燈因熱情而點燃,生命之舟因拼搏而前行。
          105、擁有夢想只是一種智力,實現夢想才是一種能力。
          106、只有一條路不能選擇——那就是放棄的路;只有一條路不能拒絕——那就是成長的路。
          107、人的才華就如海綿的水,沒有外力的擠壓,它是絕對流不出來的。流出來后,海綿才能吸收新的源泉。
          108、每天早上醒來,你荷包里的最大資產是24個小時——你生命宇宙中尚未制造的材料。
          109、如果要挖井,就要挖到水出為止。
          110、成功決不喜歡會見懶漢,而是喚醒懶漢。
          111、未遭拒絕的成功決不會長久。
          112、外在壓力增加時,就應增強內在的動力。
          113、股票有漲有落,然而打著信心標志的股票將使你永漲無落。
          114、只要我們能夢想的,我們就能實現。
          115、凡事要三思,但比三思更重要的是三思而行。
          116、做的技藝來自做的過程。
          117、成功的信念在人腦中的作用就如鬧鐘,會在你需要時將你喚醒。
          118、偉大的事業不是靠力氣、速度和身體的敏捷完成的,而是靠性格、意志和知識的力量完成的。
          119、只有千錘百煉,才能成為好鋼。
          120、肉體是精神居住的花園,意志則是這個花園的園丁。意志既能使肉體“貧瘠”下去,又能用勤勞使它“肥沃”起來。
          121、對于最有能力的領航人風浪總是格外的洶涌。
          122、知識給人重量,成就給人光彩,大多數人只是看到了光彩,而不去稱量重量。
          123、最重要的就是不要去看遠方模糊的,而要做手邊清楚的事。
          124、為明天做準備的最好方法就是集中你所有智慧,所有的熱忱,把今天的工作做得盡善盡美,這就是你能應付未來的唯一方法。
          125、人性最可憐的就是:我們總是夢想著天邊的一座奇妙的玫瑰園,而不去欣賞今天就開在我們窗口的玫瑰。
          126、征服畏懼、建立自信的最快最確實的方法,就是去做你害怕的事,直到你獲得成功的經驗。
          127、世上最重要的事,不在于我們在何處,而在于我們朝著什么方向走。
          128、行動不一定帶來快樂,而無行動則決無快樂。
          129、如果我們都去做自己能力做得到的事,我們真會叫自己大吃一驚。
          130、失去金錢的人損失甚少,失去健康的人損失極多,失去勇氣的人損失一切。
          131、這世上的一切都借希望而完成,農夫不會剝下一粒玉米,如果他不曾希望它長成種粒;單身漢不會娶妻,如果他不曾希望有孩子;商人也不會去工作,如果他不曾希望因此而有收益。
          132、相信就是強大,懷疑只會抑制能力,而信仰就是力量。
          133、那些嘗試去做某事卻失敗的人,比那些什么也不嘗試做卻成功的人不知要好上多少。
          134、恐懼自己受苦的人,已經因為自己的恐懼在受苦。
          135、在真實的生命里,每樁偉業都由信心開始,并由信心跨出第一步。
          136、要冒一險!整個生命就是一場冒險,走得最遠的人常是愿意去做、愿意去冒險的人。
          137、“穩妥”之船從未能從岸邊走遠。
          138、目標的堅定是性格中最必要的力量源泉之一,也是成功的利器之一。沒有它,天才也會在矛盾無定的迷徑中徒勞無功。
          139、在世界的歷史中,每一偉大而高貴的時刻都是某種熱忱的勝利。
          140、沒有熱忱,世間便無進步。
          141、沒有什么事情有象熱忱這般具有傳染性,它能感動頑石,它是真誠的精髓。
          142、一個人幾乎可以在任何他懷有無限熱忱的事情上成功。
          143、強烈的信仰會贏取堅強的人,然后又使他們更堅強。
          144、失敗是什么?沒有什么,只是更走近成功一步;成功是什么?就是走過了所有通向失敗的路,只剩下一條路,那就是成功的路。
          145、如果不想做點事情,就甭想到達這個世界上的任何地方。
          146、沒有哪種教育能及得上逆境。
          147、一個人除非自己有信心,否則帶給別人信心。
          148、障礙與失敗,是通往成功最穩靠的踏腳石,肯研究、利用它們,便能從失敗中培養出成功。
          149、讓我們將事前的憂慮,換為事前的思考和計劃吧!
          150、人生舞臺的大幕隨時都可能拉開,關鍵是你愿意表演,還是選擇躲避。
          151、能把在面前行走的機會抓住的人,十有八九都會成功。
          152、金錢損失了還能挽回,一旦失去信譽就很難挽回。
          153、在你不害怕的時間去斗牛,這不算什么;在你害怕時不去斗牛,也沒有什么了不起;只有在你害怕時還去斗牛才是真正了不起。
          154、再長的路,一步步也能走完,再短的路,不邁開雙腳也無法到達。
          155、有志者自有千計萬計,無志者只感千難萬難。
          156、不大可能的事也許今天實現,根本不可能的事也許明天會實現。
          157、我成功因為我志在成功!
          158、再冷的石頭,坐上三年也會暖。
          159、任何業績的質變都來自于量變的積累。
          160、平凡的腳步也可以走完偉大的行程。
          161、嘲諷是一種力量,消極的力量。贊揚也是一種力量,但卻是積極的力量。
          162、誠心誠意,“誠”字的另一半就是成功。
          163、領導的速度決定團隊的效率。
          164、成功呈概率分布,關鍵是你能不能堅持到成功開始呈現的那一刻。
          165、成功與不成功之間有時距離很短——只要后者再向前幾步。
          166、空想會想出很多絕妙的主意,但卻辦不成任何事情。
          167、自己打敗自己是最可悲的失敗,自己戰勝自己是最可貴的勝利。
          168、你可以這樣理解 impossible(不可能)——I’m possible (我是可能的)。
          169、為別人鼓掌的人也是在給自己的生命加油。
          170、用行動祈禱比用言語更能夠使上帝了解。
          171、成功的人是跟別人學習經驗,失敗的人只跟自己學習經驗。
          172、很多事先天注定,那是“命”;但你可以可以決定怎么面對,那是“運”!
          173、不要問別人為你做了什么,而要問你為別人做了什么。
          174、成功不是將來才有的,而是從決定去做的那一刻起,持續累積而成。
          175、你一天的愛心可能帶來別人一生的感謝。
          176、山不辭土,故能成其高;海不辭水,故能成其深!
          posted @ 2006-11-17 15:26 xzc 閱讀(280) | 評論 (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里標準的迭代器(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
          }
          }

          強大的XPath導航

          在dom4j中XPath可以表示出在XML樹狀結構中的Document或者任意的節點(Node)(例如:Attribute,Element 或者 ProcessingInstruction等)。它可以使在文檔中復雜的操作僅通過一行代碼就可以完成。例如:

          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();
          }
          }

          如果你需要關于XPath語言的任何幫助,我們強烈推薦這個站點Zvon tutorial他會通過一個一個的例子引導你學習。

          快速遍歷(Fast Looping)


          如果你不得不遍歷一個非常大的XML文檔,然后才去執行,我們建議你使用快速遍歷方法(fast looping method),它可以避免為每一個循環的節點創建一個迭代器對象,如下所示:

          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文檔對象,下面的程序為你進行了示范:

          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();


          // 以一種優雅的格式寫入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 );
          }
          }

          轉化為字符串,或者從字符串轉化

          如果你有一個文檔(Document)對象或者任何一個節點(Node)對象的引用(reference),象屬性(Attribute)或者元素(Element),你可以通過asXML()方法把它轉化為一個默認的XML字符串:

          Document document = ...;
          String text = document.asXML();

          如果你有一些XML內容的字符串表示,你可以通過DocumentHelper.parseText()方法將它重新轉化為文檔(Document)對象:

          String text = "James";
          Document document = DocumentHelper.parseText(text);

          通過XSLT樣式化文檔(Document)


          使用Sun公司提供的JAXP API將XSLT 應用到文檔(Document)上是很簡單的。它允許你使用任何的XSLT引擎(例如:Xalan或SAXON等)來開發。下面是一個使用JAXP創建一個轉化器(transformer),然后將它應用到文檔(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 加載轉化器
          TransformerFactory factory = TransformerFactory.newInstance();
          Transformer transformer = factory.newTransformer(
          new StreamSource( stylesheet )
          );

          // 現在來樣式化一個文檔(Document)
          DocumentSource source = new DocumentSource( document );
          DocumentResult result = new DocumentResult();
          transformer.transform( source, result );

          // 返回經過樣式化的文檔(Document)
          Document transformedDoc = result.getDocument();
          return transformedDoc;
          }
          }

          原文地址
          dom4j下載地址

          初次嘗試翻譯,如果有翻譯不妥的地方,希望大家指出來,我們共同進步!
          謝謝!!
          [:)]

          posted @ 2006-11-17 15:14 xzc 閱讀(434) | 評論 (0)編輯 收藏

          1. 介紹

          1)DOM(JAXP Crimson解析器)
                  DOM是用與平臺和語言無關的方式表示XML文檔的官方W3C標準。DOM是以層次結構組織的節點或信息片斷的集合。這個層次結構允許開發人員在樹中尋找特定信息。分析該結構通常需要加載整個文檔和構造層次結構,然后才能做任何工作。由于它是基于信息層次的,因而DOM被認為是基于樹或基于對象的。DOM以及廣義的基于樹的處理具有幾個優點。首先,由于樹在內存中是持久的,因此可以修改它以便應用程序能對數據和結構作出更改。它還可以在任何時候在樹中上下導航,而不是像SAX那樣是一次性的處理。DOM使用起來也要簡單得多。

          2)SAX

                  SAX處理的優點非常類似于流媒體的優點。分析能夠立即開始,而不是等待所有的數據被處理。而且,由于應用程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對于大型文檔來說是個巨大的優點。事實上,應用程序甚至不必解析整個文檔;它可以在某個條件得到滿足時停止解析。一般來說,SAX還比它的替代者DOM快許多。
             選擇DOM還是選擇SAX? 對于需要自己編寫代碼來處理XML文檔的開發人員來說,  選擇DOM還是SAX解析模型是一個非常重要的設計決策。 DOM采用建立樹形結構的方式訪問XML文檔,而SAX采用的事件模型。

            DOM解析器把XML文檔轉化為一個包含其內容的樹,并可以對樹進行遍歷。用DOM解析模型的優點是編程容易,開發人員只需要調用建樹的指令,然后利用navigation APIs訪問所需的樹節點來完成任務。可以很容易的添加和修改樹中的元素。然而由于使用DOM解析器的時候需要處理整個XML文檔,所以對性能和內存的要求比較高,尤其是遇到很大的XML文件的時候。由于它的遍歷能力,DOM解析器常用于XML文檔需要頻繁的改變的服務中。

            SAX解析器采用了基于事件的模型,它在解析XML文檔的時候可以觸發一系列的事件,當發現給定的tag的時候,它可以激活一個回調方法,告訴該方法制定的標簽已經找到。SAX對內存的要求通常會比較低,因為它讓開發人員自己來決定所要處理的tag。特別是當開發人員只需要處理文檔中所包含的部分數據時,SAX這種擴展能力得到了更好的體現。但用SAX解析器的時候編碼工作會比較困難,而且很難同時訪問同一個文檔中的多處不同數據。

          3)JDOM           http://www.jdom.org

                    JDOM的目的是成為Java特定文檔模型,它簡化與XML的交互并且比使用DOM實現更快。由于是第一個Java特定模型,JDOM一直得到大力推廣和促進。正在考慮通過“Java規范請求JSR-102”將它最終用作“Java標準擴展”。從2000年初就已經開始了JDOM開發。

            JDOM與DOM主要有兩方面不同。首先,JDOM僅使用具體類而不使用接口。這在某些方面簡化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡化了那些已經熟悉這些類的Java開發者的使用。

            JDOM文檔聲明其目的是“使用20%(或更少)的精力解決80%(或更多)Java/XML問題”(根據學習曲線假定為20%)。JDOM對于大多數Java/XML應用程序來說當然是有用的,并且大多數開發者發現API比DOM容易理解得多。JDOM還包括對程序行為的相當廣泛檢查以防止用戶做任何在XML中無意義的事。然而,它仍需要您充分理解XML以便做一些超出基本的工作(或者甚至理解某些情況下的錯誤)。這也許是比學習DOM或JDOM接口都更有意義的工作。

            JDOM自身不包含解析器。它通常使用SAX2解析器來解析和驗證輸入XML文檔(盡管它還可以將以前構造的DOM表示作為輸入)。它包含一些轉換器以將JDOM表示輸出成SAX2事件流、DOM模型或XML文本文檔。JDOM是在Apache許可證變體下發布的開放源碼

          4)DOM4J http://dom4j.sourceforge.net 
                      
                  雖然DOM4J代表了完全獨立的開發結果,但最初,它是JDOM的一種智能分支。它合并了許多超出基本XML文檔表示的功能,包括集成的XPath支持、XML Schema支持以及用于大文檔或流化文檔的基于事件的處理。它還提供了構建文檔表示的選項,它通過DOM4J API和標準DOM接口具有并行訪問功能。從2000下半年開始,它就一直處于開發之中。

            為支持所有這些功能,DOM4J使用接口和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復雜的API的代價,但是它提供了比JDOM大得多的靈活性。

            在添加靈活性、XPath集成和對大文檔處理的目標時,DOM4J的目標與JDOM是一樣的:針對Java開發者的易用性和直觀操作。它還致力于成為比JDOM更完整的解決方案,實現在本質上處理所有Java/XML問題的目標。在完成該目標時,它比JDOM更少強調防止不正確的應用程序行為。

            DOM4J是一個非常非常優秀的Java XML API,具有性能優異、功能強大和極端易用使用的特點,同時它也是一個開放源代碼的軟件。如今你可以看到越來越多的Java軟件都在使用DOM4J來讀寫XML,特別值得一提的是連Sun的JAXM也在用DOM4J。

          2.. 比較

          1)DOM4J性能最好,連Sun的JAXM也在用DOM4J。目前許多開源項目中大量采用DOM4J,例如大名鼎鼎的Hibernate也用DOM4J來讀取XML配置文件。如果不考慮可移植性,那就采用DOM4J.

          2)JDOM和DOM在性能測試時表現不佳,在測試10M文檔時內存溢出。在小文檔情況下還值得考慮使用DOM和JDOM。雖然JDOM的開發者已經說明他們期望在正式發行版前專注性能問題,但是從性能觀點來看,它確實沒有值得推薦之處。另外,DOM仍是一個非常好的選擇。DOM實現廣泛應用于多種編程語言。它還是許多其它與XML相關的標準的基礎,因為它正式獲得W3C推薦(與基于非標準的Java模型相對),所以在某些類型的項目中可能也需要它(如在JavaScript中使用DOM)。

          3)SAX表現較好,這要依賴于它特定的解析方式-事件驅動。一個SAX檢測即將到來的XML流,但并沒有載入到內存(當然當XML流被讀入時,會有部分文檔暫時隱藏在內存中)。

          3. 四種xml操作方式的基本使用方法

          xml文件:

          <?xml version="1.0" encoding="GB2312"?>
          <RESULT>
              <VALUE>
                  <NO>A1234</NO>
                 <ADDR>四川省XX縣XX鎮XX路X段XX號</ADDR>
              </VALUE>
              <VALUE>
                  <NO>B1234</NO>
                 <ADDR>四川省XX市XX鄉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();
              }
          }

          轉自:http://blog.dl.net.cn/xd/3/archives/2005/15.html

          posted @ 2006-11-17 15:01 xzc 閱讀(369) | 評論 (0)編輯 收藏
          『本文地址:http://v2.djasp.net/Static/ie/1147.stm

          1.文檔對象模型(DOM)
          DOM是HTML和XML文檔的編程基礎,它定義了處理執行文檔的途徑。

          編程者可以使用DOM增加文檔、定位文檔結構、填加修改刪除文檔元素。W3C的重要目標是把利用DOM提供一個使用于多個平臺的編程接口。W3C DOM被設計成適合多個平臺,可使用任意編程語言實現的方法。
          2.節點接口
          XML parser用來裝載XML文檔到緩存中,文檔裝載時,可以使用DOM進行檢索和處理。DOM采用樹形結構表示 XML文檔,文檔元素是樹的最高階層,該元素有一個或多個孩子節點用來表示樹的分枝。
          節點接口程序通常用來讀和寫XML節點樹中的個別元素,文檔元素的孩子節點屬性可以用來構造個別元素節點。XML parser用來證明Web中的DOM支持遍歷節點樹的所有函數,并可通過它們訪問節點和及其屬性、插入刪除節點、轉換節點樹到XML中。
          所有Microsoft XML parser函數得到W3C XML DOM的正式推薦,除了load和loadXML函數(正式的DOM不包括標準函數loading XML文檔)。有13個節點類型被Microsoft XML parser支持,下面列出常用節點:
          節點類型 例子
          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文檔進入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文檔進入parser中。第二行保證文檔裝載完成以后parser進行下一步工作。
          5. parseError對象
          打開XMl文檔時,XML Parser產生錯誤代碼,并存在parseError對象中,包括錯誤代碼、錯誤文本和錯誤行號,等信息。
          6.文件錯誤
          下面的例子將試圖裝載一個不存在的文件,然后產生相應的錯誤代碼:
          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 返回字符串型產生錯誤原因
          url 返回url裝載文檔指針
          filePos 返回長整型錯誤文件位置
          9.遍歷節點樹
          一種通用的析取XML文檔的方法是遍歷節點樹和它的元素值。 下面是使用VBScript寫的遍歷節點樹的程序代碼:
          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)
          next

          10.為XML文件提供HTML格式
          XML的一個優點是把HTML文檔和它的數據分離開。通過使用瀏覽器中的XML parser,HTML頁面可以被構造成靜態文檔,通過JavaScript提供動態數據。下面的例子使用JavaScript讀取XML文檔,寫XML數據成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數據成HTML元素:
          var xmlDoc = new ActiveXObject("Microsoft.XMLDOM")
          xmlDoc.async="false"
          xmlDoc.load("note.xml")
          document.write(xmlDoc.getElementsByTagName("from").item(0).text)
          12.裝載純XML文本進入parser
          下面的代碼裝載文本字符串進入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進入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節點樹:
          <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 進入 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 閱讀(1046) | 評論 (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>
          現在我需要對這個xml文件的內容進行操作.
          首先,我們需要加載這個xml文件,js中加載xml文件,是通過XMLDOM來進行的.
          //?加載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文件對象出來了,?接下去我就要對這個文檔進行操作了.
          比如說,我們現在需要得到節點Login/Weapon/W的第一個節點的屬性,那么我們可以如下進行.
          本文由 點擊設計 http://www.djasp.Net 收集整理。謝絕無聊之人轉載!

          //?首先對xml對象進行判斷
          checkXMLDocObj????=?function(xmlFile)
          {
          ????var?xmlDoc????=?loadXML(xmlFile);
          ????if(xmlDoc==null)
          ????{
          ????????alert(’您的瀏覽器不支持xml文件讀取,于是本頁面禁止您的操作,推薦使用IE5.0以上可以解決此問題!’);
          ????????window.location.href=’/Index.aspx’;
          ????}
          ????
          ????return?xmlDoc;
          }
          ★點擊設計★ http://www.djasp.Net 全力打造WEB技術站點,歡迎大家訪問!
          //?然后開始獲取需要的Login/Weapon/W的第一個節點的屬性值
          var?xmlDoc????=?checkXMLDocObj(’/EBS/XML/Login.xml’);
          var?v????=?xmlDoc.getElementsByTagName(’Login/Weapon/W’)[0].childNodes.getAttribute(’Text’)
          而我在我的程序中的寫法是這樣子的,當然我在程序中的寫法是已經應用到實際中的了.一并給出來,以供查看
          本文由 ★點擊設計★ http://www.djasp.Net 收集整理。謝絕無聊之人轉載!
          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)來進行的.
          還可以通過xmlDoc.documentElement.childNodes(1)..childNodes(0).getAttribute(’Text’)進行訪問.
          一些常用方法:
          xmlDoc.documentElement.childNodes(0).nodeName,可以得到這個節點的名稱.
          xmlDoc.documentElement.childNodes(0).nodeValue,可以得到這個節點的值.?這個值是來自于這樣子的xml格式:<a>b</b>,?于是可以得到b這個值.
          xmlDoc.documentElement.childNodes(0).hasChild,可以判斷是否有子節點
          盜版它人網站的內容可恥,您查看的內容來源于★點擊設計★www.djasp.Net
          根據我的經驗,最好是使用getElementsByTagName(xPath)的方法對節點進行訪問,因為這樣子可以直接通過xPath來定位節點,這樣子會有更好的性能.

          posted @ 2006-11-16 12:25 xzc 閱讀(320) | 評論 (0)編輯 收藏
          僅列出標題
          共32頁: First 上一頁 21 22 23 24 25 26 27 28 29 下一頁 Last 
          主站蜘蛛池模板: 于田县| 台东市| 吉林省| 都江堰市| 长沙市| 多伦县| 毕节市| 新闻| 宜宾市| 宁南县| 新营市| 金平| 凉城县| 秦皇岛市| 金寨县| 郁南县| 桑植县| 双峰县| 金溪县| 固镇县| 余姚市| 屯昌县| 宜丰县| 洪泽县| 凉城县| 福贡县| 常熟市| 彰化县| 洪雅县| 密山市| 铜川市| 宁海县| 新龙县| 南康市| 刚察县| 禹城市| 皋兰县| 高雄市| 陵水| 咸丰县| 青神县|