在此之前,我寫了兩篇關于ASP結合XML的貼子,分別介紹了用XML取代數據庫和用XML整合數據庫這兩方面的技術,讓數據庫在某種情況下不再是我們的唯一選擇。而XML跟傳統數據庫相比,更有以下優點:更小的文件體積,更靈活的數據存貯,更方便的文件讀寫(因為XML是文本文件,所以無需專門的軟件制作和維護),而且XML技術也是網絡發展的大勢所趨(從.NET對XML全面的支持便可見一斑了)。如果有興趣的話,讓我們一起來寫一些自己的Function,來更方便和直觀地讀寫XML。 .
乍一看,XML跟HTML的格式非常相似,的確,因為它們都是衍生自SGML,基本數據也都是由首標簽,尾標簽,注釋標簽和一些普通文本組成。但XML在語法上比HTML要求更嚴格,稍有不慎,你的XML便會犯上語法錯誤,導致無法讀取其中數據。比如,在HTML中,我們把<a href=../../"index.HTML">寫成<a href=../../index.HTML>是完全沒問題的,但XML中這樣就絕對不行,XML要求標記的屬性必須用單引號或雙引號引起來。至于如何寫一個合法的XML文件,我在前兩篇中都有敘說,大家可以搜索出來看幾眼,這里也就不多寫,下面給出一個合法的XML文件的例子,也是接下來我們要用到的。 .
================================================================= songlist.XML
<?XML version="1.0" encoding="gb2312"?>
<!-- 注釋:轉貼請注明作者 -->
<歌曲列表>
<歌曲 歌名="Yesterday" 時間="1:53" 分級="5"/>
<歌曲 歌名="Imagine" 時間="3:04" 分級="5"/>
<歌曲 歌名="All You Need Is Love" 時間="3:52" 分級="4"/>
<歌曲>
<歌名>Come Together</歌名>
<時間>4:18</時間>
<分級>4</分級>
</歌曲>
<歌曲 演唱者="約翰列儂">
<歌名>Oh My Love</歌名>
<時間>2:44</時間>
<分級>5</分級>
</歌曲>
<最后一次修改 修改人="" 時間="">無修改內容<最后一次修改>
</歌曲列表>
================================================================================ .
這個例子應該可以充分展現XML比數據庫更靈活的一面,雖然每一條記錄都是存貯一首歌的歌名,時間,分級這三項信息,但我們有多種存貯方法可選,既可以把數據放在標記的屬性里,也可以把數據放到下一級標記里顯示,像上例那樣,兩者共存也沒問題。同時,XML也沒有規定當你第一條記錄有多少列時,你第二條記錄也一定要有那么列,就上例而言,我們完全可以再加一條歌曲記錄,只指定歌名和時間而不分級。至于每一條記錄的標簽(如1-5條中的"歌曲"),可以重復也可以不同,你看,我就在最后加了一個完全與前面不同的"最后一次修改"標簽。總之,XML在要求語法合法的同時也給了開發人員充足的自由,以前在數據庫里要用幾個表才能記錄的事,我們現在可以通通放在一個XML中了。下面,我一步一步來演示如何讀寫其中的任何一個元素。 .
首先,像打開數據庫一樣,我們也得打開我們的XML文件。像這樣:
Set rootXML = server.CreateObject("MSXML.DOMDocument")
rootXML.load server.MapPath("XML/config.XML") “MSXML.DOMDocument是windows”的一個標準組件,每臺機器上都有的,請放心使用。 。
然后,為了能夠操作文件里的各項數據,我們再建一個類似游標的變量root,并把它指向XML文件的根標記(也就是<歌曲列表>):