給XML初學(xué)者建議_Xml教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:XPath 新手入門教程:XPath 簡介
      XPath是一種在XML文檔中查找信息的語言。XPath用于在XML文檔中通過元素和屬性進(jìn)行導(dǎo)航。 在學(xué)習(xí)之前應(yīng)該具備的知識: 在您繼續(xù)學(xué)習(xí)之前,應(yīng)該對下面的知識有基本的了解: HTML / XHTML

       差不多每天都有人問“什么是 XML”,“XML 能做什么”,“XML 能不能替我做這個(gè)”,
      “XML 會取代什么” 等等諸如此類的問題。由于最近一段時(shí)間稍微對 xml 使用了一下,
      我來談?wù)勛约旱母杏X。這些經(jīng)驗(yàn)都很淺顯,任何一個(gè)用過 xml 的人都有,并且見仁見智,
      只不過我算剛剛走過這段路,對自己一開始的困惑,誤解還記得清,所以拿出來和大家
      分享一下。
        我覺得初學(xué)者可能會走近的誤區(qū):
        1. XML 是不是 HTML 的取代者?
        不是。寫得好的 html 應(yīng)該是一個(gè) well-formed 的 xml 文檔,其他方面最好不要
      把他們放在一個(gè)水平線上比較。
        2. XML 是不是數(shù)據(jù)庫的取代者?
        不是。
        3. XML 是不是...的取代者?
        都不是。
        這個(gè)結(jié)論可能聽上去很滑稽:XML 是非常非常重要的東西,但它什么都取代不了。
        但這并不奇怪,有人把它比做 ASCII 標(biāo)準(zhǔn),他們是一切一切的基礎(chǔ),但并沒有(也不需要)取代什么。(但是就如同 ASCII 取代了一些沒有成大器的字符集定義,XML 也會取代你在應(yīng)用中自己定義的一些數(shù)據(jù)傳輸規(guī)范,但沒有什么特別主流的東西。)
        剛開始學(xué) XML (或者說沒開始學(xué)之前)的時(shí)候最愛問的一個(gè)問題肯定是:使用 XML 能給我?guī)硎裁春锰帲?br />   我覺得從某種角度上說,使用 XML 有些象使用 OO 面向?qū)ο螅?br />   - 你可以用它,你也可以不用它。
        - 如果你的應(yīng)用非常簡單,用它不一定方便,沒準(zhǔn)兒用了效果還會更差。
        - 和其他實(shí)際東西比如數(shù)據(jù)庫,MTS,Web Server比起來,它更像是一個(gè)概念,一種方法
        - 項(xiàng)目越大,它的發(fā)揮余地越大,作用越大。
        - 一旦真正理解后,哪怕不用 xml parser,也不妨礙你使用這個(gè)概念,如同可以拋開特定語言使用 OO。
        - ......
        好像更抽象,更沒譜兒了吧。
        那就隨便舉個(gè)例子。比如你本來想在 bbs 應(yīng)用中的兩個(gè)模塊之間傳一些數(shù)據(jù):
        - 發(fā)言人
        - 密碼
        - 標(biāo)題
        - 內(nèi)容
        使用四個(gè)參數(shù)是不太現(xiàn)實(shí)的,因?yàn)槟汶S時(shí)可能要擴(kuò)展功能,比如再加上個(gè)
        - 表情符號
        等等
        不可能每次加個(gè)功能,就重新定義一遍函數(shù)。
        所以最簡單的方法是把他們合并起來作為一個(gè)參數(shù)傳遞給函數(shù)。
        在有 xml 之前,你可能會使用分隔符:
        str = "發(fā)言人=張三;密碼=**;標(biāo)題=abc;內(nèi)容=xyz"
        到 server 那邊使用 dictionary 或 collection 或 split 等等方法把他們拆開。
        (當(dāng)然可以自己定義對象啦,結(jié)構(gòu)啦等等,但多數(shù)情況下還得是純字符串--比如另一個(gè)模塊不是自己開發(fā)的。)
        這種傳遞字符串的方法有幾個(gè)問題,總結(jié)成兩個(gè)最大的方面就是:
        1. 正確的解析它很麻煩。(比如標(biāo)題正好是“發(fā)言人=張三;”怎么辦)
        2. 是平面的,沒有層次型結(jié)構(gòu)
        你可以寫些函數(shù)來解決這些問題,比如確保里面肯定有“發(fā)言人”,“密碼”等等;
        再寫些函數(shù)做一下字符轉(zhuǎn)義,再寫些函數(shù)制造出層次性的效果...
        夠了!咱還是用 XML 吧。在我目前淺顯的認(rèn)識里:
        - XML 是用來傳遞數(shù)據(jù)的
        - XML 讓這些數(shù)據(jù)有了結(jié)構(gòu) -- 一個(gè)樹型結(jié)構(gòu)
        - xml 有全套的操作這種結(jié)構(gòu)的方法
        - xml 規(guī)范(或者說的實(shí)際點(diǎn),xml parser)幫你確定你創(chuàng)建的字符串是合法的
        - xml 規(guī)范(或者說的實(shí)際點(diǎn),xml parser)中有辦法驗(yàn)證這個(gè)合法性
        - 對于拿到這個(gè)字符串的 server component 來說,可以用 xml 中現(xiàn)成的方法來操作它,這就是 xpath, pattern,類似于 T-SQL 語句。(但記住 xml 是樹型結(jié)構(gòu)的)
        - XSLT 使用 xpath 對 xml 進(jìn)行轉(zhuǎn)換(類似于 DTS),其中一種特例是把 XML 轉(zhuǎn)換成 HTML 輸出。

      分享:Xml Http抓取數(shù)據(jù)時(shí)亂碼問題解決
      內(nèi)碼問題.用這段代碼的吧,我已經(jīng)改得很精簡了. 使用XMLHTTP抓取地址并進(jìn)次內(nèi)容處理 以下為引用的內(nèi)容: Function GetBody(Url) Dim objXML On Error Re

      來源:模板無憂//所屬分類:Xml教程/更新時(shí)間:2008-08-22
      相關(guān)Xml教程