Zur�ckholen von XML mit Asp
|
F oder die meisten gegr�ndeten Nettoorganisationen, die Daten, die in ihren Datenbanken gespeichert werden, sind ihre alleinige Eigenschaft. Wie diese Daten effektiv organisiert werden k�nnen und leistungsf�hig mit XML, ist das Thema dieses Artikels.
|
Wenn du eine Datenbank im MS Zugang verursachst, selbst wenn sie leer ist, nimmt sie eine Menge Raum gerade f�r Struktur. Recht? Warum Vergeudung dieser viele Raum gerade f�r Struktur, wenn du Informationen ungef�hr mindestens hundert Mitglieder deines Aufstellungsortes im gleichen Raum speichern kannst. Wenn du Daten als XML speicherst, wird es in Form einer einfachen Textakte mit der Verl�ngerung .XML, zusammen mit einigen Umbauten gespeichert. Vorl�ufig gehe ich nicht in die ausf�hrliche Theorie des Erkl�rens der Verwicklungen von XML, aber konzentriere eher mich auf, wie man sie Asp verwendend zug�nglich macht und manipuliert.
|
Bevor wir anfangen, was alles f�r dein web server angefordert wird, dienen XML. F�r die verarbeitende Bediener-Seite XML, mu� IE 5.0+ auf den Bediener angebracht werden. Dieses ist, weil wir XML DOM (XML Dokument-Gegenstand-Modell) ben�tigen, das im Allgemeinen eine XML grammatische Definition ist, das wird zur Verf�gung gestellt als Bestandteil von IE5.
|
Jetzt sind wir bereit, unsere Indexe zu schreiben. Wir ben�tigen zwei Sachen.
|
- Data Source
- ASP Script to manipulate the data.
|
Uns eine Datenquelle verursachen zuerst lassen.
Annehmen, da� wir einen Hilfsmittelbeh�lter beibehalten m�chten, in dem wir eine kurze Beschreibung des Hilfsmittels, seine Verbindung auf dem Netz und seinen Verbindung Text einschlie�en m�chten. Die Datenquelle des Beispiel XML f�r dieses kann sein:
|
(Contents of File Resource.XML)
|
<?xml
version="1.0" ?>
<Resource_Repository>
<Resource>
<text>
This program
allows you to encrypt your HTML Source Codes
so that no one can steal and Copy Paste them in their own site.
</text>
<link>
<url>
ftp://ftp.cedium.net/internet/htmlcrypt/encryptHTML.exe
</url>
<linetext>
HTML Source Code Encryption
</linetext>
</link>
<Size>
736 KB
</Size>
</Resource>
<Resource>
<text>
DOS Based
Eliza Program. Eliza is a Computer program that can talk to you
like a human being. Makes use of Artificial Intelligence.
</text>
<link>
<url>
http://hps.elte.hu/~gk/Eliza/ELIZA.EXE
</url>
<linetext>
Eliza Chatterbot
</linetext>
</link>
<Size>
36 KB
</Size>
</Resource>
</Resource_Repository>
|
Now we write a script to access this data and display it on the web page.
I result will be generated in a very simple format, to make the ASP Code simple to understand.
|
To begin with, we need to create an XML DOM object on the server.
This can be done with a line as simple as :
|
<% Set objXML =
Server.CreateObject("Microsoft.XMLDOM") %>
|
Now we need to give the path of our data source.
So add the following line to the code:
|
<%
objXML.Load (Server.MapPath("Resource.xml"))
If objXML.parseError.errorCode <> 0 Then
Response.Write "<p><font color=red>Error loading the Resource
file.</font></p>"
Response.End
End If
%>
|
If the XML DOM Parser throws any error, then we catch that and display the error message.
|
We want to display the list of all the resources in the file Resource.xml.
We know that the resources are enclosed within <Resource> tag.
So, the next step is to create a list of all the objects
under the tag <Resource>.
|
<%
Set objLst = objXML.getElementsByTagName("Resource")
%>
|
The Length property of object list indicates the number of items in the list.
For example, in our example of Resource.xml, there are two records under the <Resource> tag.
So, objLst.Length shows the value 2, when displayed.
|
<%
Response.write "There are " & objLst.Length & " resources
on this site."
%>
|
This is quite interesting upto now. What about accessing individual sub-items ? Suppose we just want
to display the URLs of all the resources in our 'database', how can we do that ?
|
Create one more object, now referring to the items inside the object list. The
sub-items can be accessed by using childNodes(index). See this code for further understanding :
|
<%
' for each resource in the list
For i = 0 To objLst.Length - 1
Set subLst = objLst.item(i)
Response.write "<P>" & vbcrlf
Response.Write "<a href='" &
subLst.childNodes(1).childNodes(0).Text & "'>" _
& subLst.childNodes(1).childNodes(0).Text & "</a>"
Next
%>
|
A careful look at the structure of the XML document that we had created earlier reveals that <URL>
is inside <Link> which is second element of the <Resource> (first being <text>).
If we start our indexing from 0 (Zero), then <Link> is the first element of <Resource> and
<URL> is the Zeroeth element inside <Link>. That's why I have written the line:
|
subLst.childNodes(1).childNodes(0).Text
|
which is nothing but <URL>. Re-read the previous paragraph
if you are still not clear and I am sure you will get it soon.
So, the final source code of the ASP file we have
created for displaying the URL of all the resources in our database is:
|
<%
' creating an object of XMLDOM
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
' Locating our XML database
objXML.Load (Server.MapPath("Resource.xml"))
' checking for error
If objXML.parseError.errorCode <> 0 Then
Response.Write "<p><font color=red>Error loading the Resource
file.</font></p>"
Response.End
End If
' referring to Resource
Set objLst = objXML.getElementsByTagName("Resource")
Response.write "There are " & objLst.Length & " resources
on this site ."
' for each resource
For i = 0 To objLst.Length - 1
' refer to sub-item
Set subLst = objLst.item(i)
'display the URL
Response.Write "<a href='" &
subLst.childNodes(1).childNodes(0).Text & "'>" _
& subLst.childNodes(1).childNodes(0).Text & "</a>"
Next
%>
|
Of course, you would need to add all those formatting HTML tags to make this list more attractive.
But the core remains the same.
|
Conclusion:
|
In this article, we learned how to retrieve the 'records' from XML 'database'.
For complete Database related operations, we must know how to insert,
update and delete the records from the Scripts.
In the next article, we will see how to perform these operations as well.
|