ASP產生XML資料文檔

來源:互聯網
上載者:User

一、必須弄清楚最終需要的是什麼
  
  我們通過asp或其他動態程式設計語言,最終需要的是XML格式的資料,這點和XML資料所在的檔案載體無關,它可以是實實在在的XML檔案,比如:/rss_1.xml 。也可以為asp文檔,比如:/rss.asp?id=42
  
  他們都是XML資料的體現,為了實現XML資料的動態,所以需要使用到動態程式設計語言,比如ASP來實現產生它。
  
  二、如何產生動態XML文檔
  
  如果是產生XML檔案,介於動態文檔是ASP格式的,所以必須藉助FSO進行XML檔案的產生,比如:
  
  以下是引用片段:
  <%
  xmlfile=server.mappath("test1.xml")
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set MyFile = fso.CreateTextFile(xmlfile,True)
  MyFile.WriteLine("<?xml version=""1.0"" encoding=""gb2312""?>")
  MyFile.WriteLine("<世界>")
  MyFile.WriteLine("<你好>hello,world</你好>")
  MyFile.WriteLine("</世界>")
  MyFile.Close
  %>
  
  <a href="test1.xml">查看XML檔案內容</a>
  
  有關FSO的操作參看
  http://www.111cn.net/tag-7.html
  
  如果按照產生動態XML資料檔案來說,則是將MyFile.WriteLine的相關內容在動態文檔中通過程式的手段來控制XML節點的名稱和值即可。
  
  三、如何使用動態文檔產生XML資料
  
  那如果不是產生XML檔案,直接在動態文檔上輸出XML資料呢,須聲明檔案的類型(即Response.ContentType)
  
  <%Response.ContentType = "text/XML"%>
  
  比如直接瀏覽如下的動態ASP文檔,在瀏覽器中下則顯示為XML資料樹
  
  以下是引用片段:
  <%
  With Response
   .ContentType = "text/XML"
   .write("<?xml version=""1.0"" encoding=""gb2312""?>")
   .write("<世界>")
   .write("<你好>hello,world</你好>")
   .write("</世界>")
  End with
  %>
  
  
  產生的XML檔案,其優勢就是處理該XML資料的文檔可以是靜態文檔,比如HTML檔案通過javascript、XMLDOM來解析XML,同時也易於資料的保留,而動態文檔上的動態XML資料則沒有這樣有點。不過,在如今動態文檔無處不在用的時代,似乎這個優勢對於一些應用來說是無甚影響,甚至來說,動態文檔的XML資料流反而更具優勢:更及時、更動態。
  
  四、產生XML資料就是這樣行了嗎?
  
  無論是通過產生具體的XML檔案,還是動態XML資料流,只要按照XML的格式輸出相關XML節點和值就可以了,這樣看來XML似乎很簡單。但這並沒有真正接觸到XML的操作。在我們看來,這些XML無非就是一些成對的標籤和相關字元組成的資料記錄,毫無生命力可言。然而事實上,通過XMLDOM來操作XML則顯示了XML的絕對優勢(這點在產生XML時優勢不明顯,卻在添加、刪除XML節點時體驗無限)。
  
  使用XMLDOM建立XML文檔,可使用Save方法產生XML文檔,使用createElement方法建立XML元素、createNode建立節點,其實對於XML中的任何標籤的建立都可以任意選擇其中的一種,不過一般使用createElement建立頂層(根)元素,使用createNode建立子節點(元素),當然createElement和createNode的使用方法也是不同。
  
  
  以下是引用片段:
  <%
  Set objXMLdoc = CreateObject("Microsoft.XMLDOM")
  Set world=objXMLdoc.createElement("世界")
  objXMLdoc.appendChild(world)
  Set hello=objXMLdoc.createNode("element", "你好", "")
  hello.Text = "hello,world"
  objXMLdoc.documentElement.appendChild(hello)
  objXMLdoc.Save Server.MapPath("test2.xml")
  Set objXMLdoc = Nothing
  %>
  
  CreateObject("Microsoft.XMLDOM") 聲明使用XMLDOM對象
  在元素或節點被建立(createElement、createNode)時,其並沒有加到檔案樹中,若要將節點加到檔案樹中,則需要插入,如appendChild。
  xmlDocument.createNode(type, name, nameSpaceURI) 表示建立一個指定型態、名稱,及命名空間的新節點
  type 用來確認要被建立的節點型態,name 是一個字串來確認新節點的名稱,命名空間的首碼則是選擇性的。nameSpaceURI 是一個定義命名空間URI 的字串。如果首碼被包含在名稱參數中,此節點會在nameSpaceURI 的內文中以指定的首碼建立。如果不包含首碼,指定的命名空間會被視為預設的命名空間。
  objXMLdoc.createNode("element", "你好", "") 等同於 objXMLdoc.createElement("你好")
  4,objXMLdoc.documentElement.appendChild(hello)其實就是XML文檔根項目下建立節點,在本例中等同於 world.appendChild(hello),world為本例中的節點名,以此類推。
  所以可以這樣來寫:
  
  
  以下是引用片段:
  <%
  Set objXMLdoc = CreateObject("Microsoft.XMLDOM")
  Set world=objXMLdoc.createElement("世界")
  objXMLdoc.appendChild(world)
  Set hello=objXMLdoc.createElement("你好")
  hello.Text = "hello,world"
  world.appendChild(hello)
  objXMLdoc.Save Server.MapPath("test2.xml")
  Set objXMLdoc = Nothing
  %>
  
  
  需要注意的是,通過XMLDOM產生的XML檔案都是UTF-8格式的,這對我們所有應用程式檔案的UTF-8化作了很好的推介。
  
  總結
  
  產生XML資料,可以使用FSO,如FSO被禁用,可使用XMLDOM,當然還可以直接使用動態文檔。不過如果融會貫通地掌握XML的操作,XMLDOM操作是必須的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.