作为一名专栏作家,我的目标并不是报导新闻、或是向读者提供一份不断更新的专家投资建议。相反我认为,有些金融投资指南是放之四海皆准的,因此我会反复加以琢磨。
其中有些投资建议是我经常挂在嘴边的,而另一些是最近突然闪现在我的脑海里。想更好地管理你的资金吗?我在这里向您提供九条最重要的理财法则。
1)勇于说“不”
为了成功地进行储蓄和投资,没什么比自律更重要了。
这意味着看准一些股票、债券和货币市场基金后进行投资,然后坚持持有这一投资组合,无论动荡的市场是多么令人烦恼不安,也无论你是多么想购买最新的热门股。
更重要的是,你不能轻易自满,因此可进行适量的定期储蓄。
2)别患上享乐适应症
花钱并不能给你带来快乐。然而许多人都这么做,于是他们一生都要面对高额的信用卡帐单,以及失望的情绪。
知道这个心理循环吗?你看中了某件商品,然后认定非要得到它不可,于是付帐。然而几周或几个月之后,你就把这件事忘得一干二净,又开始新的物质追求了。
学者们把这种现象称为“快乐水车”或“享乐适应症”(hedonic treadmill)。从中可以吸取的教训是什么呢?如果你想得到快乐,别到购物中心去寻找,那里是找不到的。
3)我们就是市场
尽管大家都在谈论跑赢大市,但事实上我们的前进道路上存在着一个不可逾越的障碍。
不可能所有的人都跑赢大市,因为我们本身就是市场的组成部份。如果有人跑赢大市,那么必然有人被市场打败。
实际上,如果再算上投资成本,能跑赢大市的投资者就寥寥无几了,而大多数投资者都落后于市场平均水平。
4)谁分了你的钱
还有一点你得记住,不管你是否乐意,你还有两位投资伙伴:华尔街和收税员。你们三个人共同分配你的投资收益。
想自己多留一点,给华尔街和收税员少点?最好的办法是降低投资成本,同时最大限度地利用避税的退休金帐户。
5)请专家帮忙
十年前,我认为大多数投资者有能力自己进行投资。如今,我可不这么想了。
看上去大多数投资者是没有时间、兴趣和精力亲自进行成功的投资的。
不过遗憾的是,即使你聘请了经纪人或是理财规划师,你的感觉也好不了多少。许多顾问收费昂贵,但他们自己也只有少得可怜的正规理财教育,因此你在挑选顾问的时候得特别小心。
6)别落在后面
当专家们讨论投资多样化的时候,他们会指出,购买各种投资产品能降低投资风险,因为其中一些投资会带来收益,而另一些会出现亏损。
但问题在于:每当我们面临重大金融危机的时候,投资多样化──特别在全球股票市场上进行多样化的投资──常常被证明是起不了什么作用的,因为所有的股票都在暴跌。
不过我觉得这种想法忽略了关键要点。即使美国股票和海外股票一同涨跌,它们的年投资回报还是存在着惊人的差距。那些仅仅投资于一个市场的投资者们可能会面临较长的低迷时期。
此外,投资多样化也不仅仅是为了减少投资组合的短期波动。你还想限制金融灾难给你带来的损失,无论是因为政局动荡而导致金融市场出现混乱,还是金融市场本身出现崩溃,例如上世纪九十年代的日本市场。
7)家庭很重要
孩子是你的继承人。他们将继承你的资产,也极有可能接受你的理财观念。
你的家庭是你最大的资产,同时也是最大的负债。如果你的孩子或父母陷入了财务困境,你将伸出援手。同样,在你碰到困难时,他们也会伸出援手。
记住这些很重要。可以与你的父母谈谈他们的财务状况,也可以教导孩子们如何理财。
想想你自己是如何管理财产的吧,特别是想想当出现问题时,它们会给家庭带来什么影响。
8)进行长期投资
如果你年纪轻轻就离开人世,这对你的配偶和孩子来说是沉重的打击。但是请别忽略了其他风险:如果你活得远比预计的长呢?
许多退休人士非常担心英年早逝,因此他们急着申请社会保障金,而拒绝购买终生年金。如果你确信自己和配偶生命短暂的话,采取这样的策略是正确的,至少你活着的时候手头充裕。
然而,如果你早早地领取了社会保障金,而且也不购买年金,但实际却活得很长呢?那你就得一分一厘地算着花钱了。
9)最后一根稻草
在金融市场开盘的交易日里,我通常每隔几小时就会查看与通货膨胀挂钩的国债的收益率。
在我看来,与通货膨胀挂钩的国债可作为其他所有投资的基准。如果我购买了十年期通货膨胀挂钩国债,我在今后十年内获得的投资收益将比通货膨胀率高2.3个百分点。
除非我确信其他投资的表现优于这一基准,否则我将继续持有十年期通货膨胀挂钩国债。在我看来,这项投资是我的最后一根救命稻草。
posted @
2006-12-14 13:07 xzc 阅读(219) |
评论 (0) |
编辑 收藏
版权所有,转载请注明,来自www.jialing.net
Ajax(Asynchronous JavaScript and XML)说到底就是一种浏览器异步读取服务器上XML内容的技术。现在的技术凡是跟XML扯上关系,再加上个概念做幌子,就像金装了一样,拽得不行。门外 的人看得很是热闹,门里的人摇摇头不外如是。XML呢,跨平台的新潮语言?其实XML=TXT。XML只是符合很多规范的文本。它本身什么都不是,只是保 存字符的文件。而浏览器异步读取的只是服务器上的文本内容,所以在Ajax开发时完全不必拘泥于XML。[版权所有,www.jialing.net]
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.org:
对象是属性、值对的集合。一个对象的开始于"{",结束于"}"。每一个属性名和值间用":"提示,属性间用","分隔。
![object.gif](http://java.chinaitlab.com/UploadFiles_8734/200612/20061212102856745.gif)
数组是有顺序的值的集合。一个数组开始于"[",结束于"]",值之间用","分隔。
![array.gif](http://java.chinaitlab.com/UploadFiles_8734/200612/20061212102856310.gif)
值可以是引号里的字符串、数字、true、false、null,也可以是对象或数组。这些结构都能嵌套。
![value.gif](http://java.chinaitlab.com/UploadFiles_8734/200612/20061212102856592.gif)
字符串的定义和C或Java基本一致。
![string.gif](http://java.chinaitlab.com/UploadFiles_8734/200612/20061212102856600.gif)
数字的定义也和C或Java基本一致。
可读性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 阅读(146) |
评论 (0) |
编辑 收藏
《
世界商业报道》
ICXO.COM ( 日期:2006-11-24 11:00)
上海的一个普通报贩在日常经营中发现,很多人对高档杂志有大量的阅读需求,但往往因为动辄几十元的零售价格望而却步。于是,他自创了一套崭新的经营模式,发展会员制将杂志租给客户,每个客户每月交30元会费和20元押金,就可以不断租杂志回家看。
很快发展了几百名会员,测算下来他一个月能挣到8000元,收入水平远远超过了同行。
这个在市井街头上演的真实故事近日通过上海某投资管理公司老总的个人博客在网上广泛流传,成为大家津津乐道的话题。看完这个故事,很多人或许都会想,同样都是卖书报杂志的,为什么差别会那么大呢?
这个小贩的故事,给我们提出了一个命题,在给定的外部环境、产业空间、成本产出比的条件下,如何获得超过同行业平均水平的回报?在这个案例中,报贩的选择是改变商业模式,将原有的终端书报发行模式从“零售”改变为“出租”,从而将获利机制中的“销售利润”转换成“出租利润”。由于每个报摊本来每月就有冗余产品的沉淀,出租成本几乎为零,而市场吸引力又远大于销售,因此具备了成功的基础。此外,由于每个客户还要交20元押金,这样上百人的押金又成为报贩手中的一笔可流动资金,相当于无息贷款。用这笔钱可以继续投入运营,比如根据客户需求引进品种更多的书报商品,扩大自己的产品竞争力。
很多人或许会想,这样模式设计并不难,为什么只有这个报贩做成了呢?除了人家脚踏实地敢于实践之外,可能还有细节方面不为人知的控制能力。网文虽未对此作更多描述,但我们可以设想,比如他可能会向客户推荐介绍近期的热点事件、精彩新闻,提供信息增值服务,他还可能会用短信提醒一些平时太忙的客户他要的杂志到了,提供“阅读小秘书”之类的服务。类似的这些增值服务,都可以提高“出租”模式的核心竞争力,让客户得到更多回报,从而保证了新商业模式的运行。
从为微软MBA上课的出租车司机,到月入8000的报贩,他们都在做一件很多人都在做的普通事情上,走出了自己的新路,也获得了超过他人的回报。比起深奥的教科书,这样的民间智慧或许是大多数平凡的创业者更需要学习的。
最近,单位附近一家饭店生意火爆,原因之一是推出了一项别人没有的简单优惠。这家饭店规定,等候20分钟以上的顾客可以全单打八折,等候10分钟的可以打九折,而在晚上6点半以前离开饭店的客人也可以打八折。如此一来,餐桌的翻台率大大提高,愿意等的人数量也大大增加,小小的折扣杠杆为这家店撬动了更大的市场。
来自草根的管理智慧到处都是,只需要我们睁大眼睛。
posted @
2006-11-27 08:59 xzc 阅读(259) |
评论 (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 阅读(514) |
评论 (1) |
编辑 收藏
摘要: 译者:Flyingis译文链接:http://www.blogjava.net/flyingis/archive/2006/11/18/81898.html http://gis.javaeye.com/blog/34853原文链接:http://getahead.ltd.uk/dwr/server/servlet翻译目录:http://www.blogjava.net/f...
阅读全文
posted @
2006-11-19 13:50 xzc 阅读(356) |
评论 (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 阅读(266) |
评论 (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( "//foo/bar" );
Node node = document.selectSingleNode( "//foo/bar/author" );
String name = node.valueOf( "@name" );
}
如果你想得到一个XHTML文档中的所有超文本链接(hypertext links)你可以使用下面的代码:
public void findLinks(Document document) throws DocumentException {
List list = document.selectNodes( "//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 阅读(431) |
评论 (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 阅读(351) |
评论 (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文档的方法是遍历节点树和它的元素值。
您查看的内容转载自 ★点击设计★ www.djasp.Net
点击设计是一个专业的网页编程资讯站点,欢迎访问!
盗用它人网站上的内容可耻,您查看的站点未经点击设计许可,大量盗用点击设计网站上的内容,,请关闭该网站然后访问点击设计官方网址:http://www.djasp.net/
下面是使用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)
next10.为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 阅读(1024) |
评论 (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 阅读(317) |
评论 (0) |
编辑 收藏