Wenn Sie ein Adressbuchprogramm für eine Website bereitstellen möchten, müssen Sie CGI in Kombination mit einer Hintergrunddatenbanktechnologie verwenden. Dies stellt relativ hohe Anforderungen an den WEB-Server und kann nicht einmal auf vielen virtuellen Hosts implementiert werden, die dies nicht tun Bereitstellung von Datenbankfunktionen. Natürlich können wir auch TXT-Text verwenden, um die Datenbank zu ersetzen, aber TXT-Text ist schwieriger zu bedienen. Wir müssen Zeile für Zeile lesen und beurteilen und auch getrennte Zeichenfolgen verwenden, um Felder zu trennen, und komplexe Vorgänge können nicht ausgeführt werden.
Jetzt können wir „Extensible Markup Language (xml)“ zum Speichern von Adressbuchdaten verwenden und so die Vorteile von XML widerspiegeln: eine strukturierte Methode zur Darstellung von Daten, die zum Speichern von Dateien mit vielen relationalen Datenstrukturen sehr nützlich ist .
1. Grundprinzipien:
In Microsoft Internet Explorer 5.0 und späteren Versionen können wir XML-Elemente verwenden, um XML-Daten zu erstellen, die in HTML-Seiten referenziert oder darin enthalten sind können in eine HTML-Datei oder in eine externe Datei eingebunden werden. Die Verwendung von XML-Dateninseln kann uns die Mühe ersparen, komplexe Skripte zu schreiben. DOM kann XML-Dokumente analysieren. Alle Elemente, Entitäten, Attribute usw. im Dokument können durch ein Objektmodell dargestellt werden. Die logische Struktur des gesamten Dokuments ähnelt einem Baum. Jedes Objekt enthält neben Methoden und Attributen auch viele Methoden zum Suchen von Knoten. Mit DOM können Entwickler dynamisch XML erstellen, Dokumente durchlaufen und Dokumentinhalte hinzufügen (löschen/ändern). Die von DOM bereitgestellte API hat nichts mit Programmiersprachen zu tun, daher gibt es in einigen DOM-Standards und der Implementierung keine klar definierten Schnittstellen Methoden verschiedener Parser können variieren.
2. Der spezifische Prozess ist:
1. Definieren Sie die XML-Datei wie folgt:
<?xml version="1.0" encoding="gb2312"?> <中国计算机世界出版服务公司通信录> <计算机世界 contactID="2"> <部门名称>计算机室</部门名称> <电话号码>139</电话号码> <电子邮件>fsdos@163.net</电子邮件> </计算机世界> </中国计算机世界出版服务公司通信录>
Speichern Sie das obige XML-Dokument als tele.xml-Datei und gleichzeitig Speichern Sie zu diesem Zeitpunkt das obige XML-Dokument. Lassen Sie den Feldinhalt als Initialisierungsrahmendaten leer und speichern Sie ihn als Datei newid.xml.
2. Der Client lädt das XML-Dokument und bindet die XML-Datei über DATASRC='#xmldso' in die Tabelle, in der das Adressbuch platziert ist. Das DATASRC-Attribut wird tatsächlich über das ID-Attribut des XML-Elements übergeben Dies wird durch das Hinzufügen von # vor dem TD-Element erreicht, sodass wir die spezifischen Felder angeben können, die in der Mitte des TD-Elements angezeigt werden müssen.
3 ;
4. Stellen Sie über den xmlhttp-Protokollserver eine Verbindung zum Adressbuch her und speichern Sie XML-Dokumente.
3. Kurze Beschreibung der XML-DOM-Programmierung:
1. Das serverseitige dns2.asp-Programm ist relativ einfach XML Erstellen Sie nach dem Sammeln der Daten ein Dateiobjekt und speichern Sie es in tele.xml:
<HTML><BODY bgColor=#a1bae6> <XML id=xmldso src="tele.xml"></XML> <XML id=newid></XML> <!--加载xml数据--> <SCRipT Language=javaScript> newid.async = false; newid.load("newid.xml"); //增加记录; function addID(){ var doc=xmldso.XMLDocument var rootnode=doc.documentElement var sortNode = rootnode.selectNodes("//部门名称") var currentid = sortNode.length-1 var cc=sortNode.item(currentid).text; if ((cc=="尚未输入")||(cc=="")) { alert("请将最后一行数据填写完毕后再增加新的记录!"); } else { var node= newid.documentElement.childNodes(0).cloneNode(true); var contactID=parseInt(sortNode.item(currentid).parentNode.getAttribute("contactID"))+1; node.setAttribute("contactID",contactID); xmldso.documentElement.appendChild(node); } } //删除记录 function delID(whichFld){ var sortNode = xmldso.selectSingleNode("//计算机世界[@contactID='"+whichFld+"']"); if (sortNode.parentNode.childNodes.length>1) sortNode.parentNode.removeChild(sortNode); } </SCRIPT> <script language="vbscript"> Sub cc_onmouseup '保存记录; Dim objXML, objXSL, objfso,strFile, strFileName, strXSL,strURL,TheForm set SaveXMLDoc=xmldso.XMLDocument strURL="dns2.asp" Set objXML = CreateObject("Microsoft.XMLHTTP") '创建MS的XMLHTTP组件; objXML.Open "post",strURL,false '采用Post提交方式; objXML.setrequestheader "content-type","application/x-www-form-urlencoded" objXML.send SaveXMLDoc ' 发送信息,保存XML数据; 'xmlGet = objXML.responsebody '稍等片刻后,得到服务器端传回来的结果; msgbox "保存成功!" Set objXML = Nothing end sub </SCRIPT> <center><b>计算机世界----通信录</b><br><br> <TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3> <!--进行数据绑定--> <THEAD><TH>编号</TH><TH>部门名称</TH><TH>电话号码</TH><TH>电子邮件</TH></THEAD> <TR> <TD><acronym title='点击即可删除该记录'><INPUT TYPE=button size=4 DATAFLD="contactID" onclick="delID(this.value)"></acronym></TD> <TD><INPUT TYPE=TEXT DATAFLD="部门名称"></TD> <TD><INPUT TYPE=TEXT DATAFLD="电话号码"></TD> <TD><INPUT TYPE=TEXT DATAFLD="电子邮件"></TD> </TR> </TABLE> <INPUT TYPE=BUTTON name=dd id=dd VALUE="增加记录" onmouSEOver="this.focus()" onmousedown="addID();"> <INPUT TYPE=BUTTON name=cc id=cc VALUE="保存"></center></BODY></HTML>
3 Während der tatsächlichen Verwendung müssen Sie auch eine Webseite index.htm hinzufügen, die das Adressbuch anzeigt. Das ist eigentlich das obige dom.htm Eine vereinfachte Version, die alle Funktionen zum Hinzufügen, Löschen, Ändern und Speichern entfernt und nur LABEEL zum Anzeigen von Daten in Tabellenzellen verwendet:
< Set ReceivedDoc = CreateObject("Microsoft.XMLDOM") '创建 XML DOM实例; ReceivedDoc.async=False ReceivedDoc.load Request '接收XML数据; Set files=Server.CreateObject("Scripting.FileSystemObject") Set numtxt=files.CreateTextFile(Server.MapPath("tele.xml"),True) numtxt.WriteLine(replace(ReceivedDoc.xml,"?>"," encoding=""gb2312""?>")) '将XML数据写入文件 numtxt.Close response.write ReceivedDoc.xml >
4. Vorteile der Verwendung von XML Dateninseln kombiniert mit Dom-Technologie:
1. Erstens natürlich die Vorteile, die XML selbst mit sich bringt. XML bricht das Monopol der Tag-Definitionen. In der in diesem Artikel verwendeten XML-Datei können sogar die Feldnamen auf Chinesisch sein, da es sich bei den darin enthaltenen Informationen nicht um eine Beschreibung handelt die Anzeige, sondern eine Beschreibung auf der Anzeige. Es ist die semantische Bedeutung der Informationen, die die Lesbarkeit des Dokuments erheblich verbessert. Die Verwendung von XML erleichtert auch die Übertragung von Informationen zwischen verschiedenen Systemen.<HTML><BODY bgColor=#a1bae6> <XML id=xmldso src="tele.xml"></XML> <center><b>计算机世界----通信录</b><br><br> <TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3> <THEAD><TH>编号</TH><TH>部门名称</TH><TH>电话号码</TH><TH>电子邮件</TH> </THEAD> <TR> <TD><label DATAFLD="contactID"></label></TD> <TD><label DATAFLD="部门名称"></label></TD> <TD><label DATAFLD="电话号码"></label></TD> <TD><label DATAFLD="电子邮件"></label></TD> </TR> </TABLE> </center></BODY></HTML>
3. DOM erzwingt die Verwendung eines Baummodells für den Zugriff auf Informationen in XML-Dokumenten. Da XML im Wesentlichen eine hierarchische Struktur ist, ist diese Beschreibungsmethode sehr effektiv. Über die DOM-Schnittstelle kann die Anwendung jederzeit auf jeden Teil der Daten im XML-Dokument zugreifen und die Steuerung ist recht flexibel.
4. Verwenden Sie das xmlhttp-Objekt, um XML-Daten an den Server zu übertragen, und die Clientseite wird ohne Flackern aktualisiert.
Dieses Programm läuft erfolgreich auf IIS5.0 und IE5.0 basierend auf der Windows 2000-Plattform. Im eigentlichen Bewerbungsprozess können Sie DOM auch in Kombination mit der XSL-Technologie verwenden, um dem Adressbuch Funktionen wie Sortierung, Formatkonvertierung und Datensuche hinzuzufügen. Verwenden Sie zum Hinzufügen das datapagesize-Attribut der XML-Dateninsel und die Funktionen PReviousPage und nextPage Paging-Funktionen zum Adressbuch. Mithilfe von DTD und XML-Schema werden Adressbuchdaten dynamisch validiert.
****************************** **********************************************
一, index.htm (Adressbuch anzeigen):
*********************************** ***** *********************************************
<HTML><BODY bgColor=#a1bae6> <XML id=xmldso src="tele.xml"></XML> <center><b>计算机世界----通迅录</b><br><br> <TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3> <THEAD><TH>编号</TH><TH>部门名称</TH><TH>电话号码</TH><TH>电子邮件</TH> </THEAD> <TR> <TD><label DATAFLD="contactID"></label></TD> <TD><label DATAFLD="部门名称"></label></TD> <TD><label DATAFLD="电话号码"></label></TD> <TD><label DATAFLD="电子邮件"></label></TD> </TR> </TABLE> </center></BODY></HTML>
*********************** ***** ********************************************* *
<HTML><BODY bgColor=#a1bae6> <XML id=xmldso src="tele.xml"></XML> <XML id=newid></XML> <SCRIPT Language=Javascript> newid.async = false; newid.load("newid.xml"); function addID(){ var doc=xmldso.XMLDocument var rootnode=doc.documentElement var sortNode = rootnode.selectNodes("//部门名称") var currentid = sortNode.length-1 var cc=sortNode.item(currentid).text; if ((cc=="尚未输入")||(cc=="")) { alert("请将最后一行数据填写完毕后再增加新的记录!"); } else { var node= newid.documentElement.childNodes(0).cloneNode(true); var contactID=parseInt(sortNode.item(currentid).parentNode.getAttribute("contactID"))+1; node.setAttribute("contactID",contactID); xmldso.documentElement.appendChild(node); } } function delID(whichFld){ var sortNode = xmldso.selectSingleNode("//计算机世界[@contactID='"+whichFld+"']"); if (sortNode.parentNode.childNodes.length>1) sortNode.parentNode.removeChild(sortNode); } </SCRIPT> <script language="vbscript"> Sub cc_onmouseup '当点击“保存”按钮时触发; Dim objXML, objXSL, objFSO,strFile, strFileName, strXSL,strURL,TheForm set SaveXMLDoc=xmldso.XMLDocument strURL="dns2.asp" Set objXML = CreateObject("Microsoft.XMLHTTP") '创建MS的XMLHTTP组件; objXML.Open "post",strURL,false '采用Post提交方式; objXML.setrequestheader "content-type","application/x-www-form-urlencoded" objXML.send SaveXMLDoc ' 发送信息 'xmlGet = objXML.responsebody '稍等片刻后,得到服务器端传回来的结果; msgbox "保存成功!" Set objXML = Nothing end sub </SCRIPT> <center><b>计算机世界----通信录</b><br><br> <TABLE id="table" DATASRC='#xmldso' BORDER CELLPADDING=3> <THEAD> <TH>编号</TH> <TH>部门名称</TH> <TH>电话号码</TH> <TH>电子邮件</TH> </THEAD> <TR> <TD><acronym title='点击即可删除该记录'><INPUT TYPE=button size=4 DATAFLD="contactID" onclick="delID(this.value)"></acronym></TD> <TD><INPUT TYPE=TEXT DATAFLD="部门名称"></TD> <TD><INPUT TYPE=TEXT DATAFLD="电话号码"></TD> <TD><INPUT TYPE=TEXT DATAFLD="电子邮件"></TD> </TR> </TABLE> <INPUT TYPE=BUTTON name=dd id=dd VALUE="增加记录" onmouseover="this.focus()" onmousedown="addID();"> <INPUT TYPE=BUTTON name=cc id=cc VALUE="保存"></center></BODY></HTML>
******************** ********** **************************************** *********** *
<% Set ReceivedDoc = CreateObject("Microsoft.XMLDOM") ReceivedDoc.async=False ReceivedDoc.load Request Set files=Server.CreateObject("Scripting.FileSystemObject") Set numtxt=files.CreateTextFile(Server.MapPath("tele.xml"),True) numtxt.WriteLine(replace(ReceivedDoc.xml,"?>"," encoding=""gb2312""?>")) numtxt.Close response.write ReceivedDoc.xml %>
<?xml version="1.0" encoding="gb2312"?> <中国计算机世界出版服务公司通信录> <计算机世界 contactID="1"> <部门名称>电话总机</部门名称> <电话号码>010-68130909</电话号码> <电子邮件>webmaster@ccw.com.cn</电子邮件> </计算机世界> </中国计算机世界出版服务公司通信录>
****************************************************************************
五、newid.xml(通讯录XML初始化文档):
<?xml version="1.0" encoding="gb2312"?> <中国计算机世界出版服务公司通信录> <计算机世界 contactID="1"> <部门名称>尚未输入</部门名称> <电话号码>保密</电话号码> <电子邮件>保密</电子邮件> </计算机世界> </中国计算机世界出版服务公司通信录>
以上就是用XML数据岛结合Dom制作通讯录的代码实例详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!
相关文章: