Detaillierte Erläuterung von Codebeispielen zum Erstellen eines Adressbuchs über XML Data Island und Dom

黄舟
Freigeben: 2017-03-25 10:36:08
Original
1588 Leute haben es durchsucht

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</电子邮件> 
      </计算机世界> 
    </中国计算机世界出版服务公司通信录>
Nach dem Login kopieren

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=&#39;"+whichFld+"&#39;]"); 
if (sortNode.parentNode.childNodes.length>1) sortNode.parentNode.removeChild(sortNode);  
} 
</SCRIPT> 
<script language="vbscript"> 
Sub cc_onmouseup &#39;保存记录; 
Dim objXML, objXSL, objfso,strFile, strFileName, strXSL,strURL,TheForm 
set SaveXMLDoc=xmldso.XMLDocument 
strURL="dns2.asp" 
Set objXML = CreateObject("Microsoft.XMLHTTP") &#39;创建MS的XMLHTTP组件; 
objXML.Open "post",strURL,false &#39;采用Post提交方式; 
objXML.setrequestheader "content-type","application/x-www-form-urlencoded" 
objXML.send SaveXMLDoc &#39; 发送信息,保存XML数据; 
&#39;xmlGet = objXML.responsebody &#39;稍等片刻后,得到服务器端传回来的结果; 
msgbox "保存成功!"  
Set objXML = Nothing 
end sub  
</SCRIPT> 
<center><b>计算机世界----通信录</b><br><br> 
<TABLE id="table" DATASRC=&#39;#xmldso&#39; BORDER CELLPADDING=3> 
<!--进行数据绑定--> 
<THEAD><TH>编号</TH><TH>部门名称</TH><TH>电话号码</TH><TH>电子邮件</TH></THEAD> 
<TR> 
<TD><acronym title=&#39;点击即可删除该记录&#39;><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>
Nach dem Login kopieren

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") &#39;创建 XML DOM实例; 
ReceivedDoc.async=False 
ReceivedDoc.load Request &#39;接收XML数据; 
Set files=Server.CreateObject("Scripting.FileSystemObject") 
Set numtxt=files.CreateTextFile(Server.MapPath("tele.xml"),True) 
numtxt.WriteLine(replace(ReceivedDoc.xml,"?>"," encoding=""gb2312""?>")) &#39;将XML数据写入文件 
numtxt.Close 
response.write ReceivedDoc.xml 
>
Nach dem Login kopieren

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=&#39;#xmldso&#39; 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>
Nach dem Login kopieren
2. Mit XML Data Island können Benutzer ohne häufige Interaktion mit dem Server auf Datensätze auf dem Client zugreifen und diese bearbeiten, was sehr hilfreich ist, um die Belastung des Servers zu reduzieren. Gleichzeitig sind aufgrund der Eigenschaften der XML-Dateninsel selbst Datenoperationen auf dem Client sehr einfach und der Programmieraufwand reduziert.

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.

---------DAS ENDE------------------ ----

Anhängen: (alle Quellprogramme)

****************************** **********************************************

一, index.htm (Adressbuch anzeigen):



*********************************** ***** *********************************************

<HTML><BODY bgColor=#a1bae6> 
<XML id=xmldso src="tele.xml"></XML> 
<center><b>计算机世界----通迅录</b><br><br> 
<TABLE id="table" DATASRC=&#39;#xmldso&#39; 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>
Nach dem Login kopieren
2. dom.htm (Adressbuch online bearbeiten):

*********************** ***** ********************************************* *

<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=&#39;"+whichFld+"&#39;]"); 
if (sortNode.parentNode.childNodes.length>1) sortNode.parentNode.removeChild(sortNode);  
} 
</SCRIPT> 
<script language="vbscript"> 
Sub cc_onmouseup &#39;当点击“保存”按钮时触发; 
Dim objXML, objXSL, objFSO,strFile, strFileName, strXSL,strURL,TheForm 
set SaveXMLDoc=xmldso.XMLDocument 
strURL="dns2.asp" 
Set objXML = CreateObject("Microsoft.XMLHTTP") &#39;创建MS的XMLHTTP组件; 
objXML.Open "post",strURL,false &#39;采用Post提交方式; 
objXML.setrequestheader "content-type","application/x-www-form-urlencoded" 
objXML.send SaveXMLDoc &#39; 发送信息 
&#39;xmlGet = objXML.responsebody &#39;稍等片刻后,得到服务器端传回来的结果; 
msgbox "保存成功!"  
Set objXML = Nothing 
end sub  
</SCRIPT> 
<center><b>计算机世界----通信录</b><br><br> 
<TABLE id="table" DATASRC=&#39;#xmldso&#39; BORDER CELLPADDING=3> 
<THEAD> 
<TH>编号</TH> 
<TH>部门名称</TH> 
<TH>电话号码</TH> 
<TH>电子邮件</TH> 
</THEAD> 
<TR> 
<TD><acronym title=&#39;点击即可删除该记录&#39;><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>
Nach dem Login kopieren
3. dns2.asp (Adressbuch im Hintergrund speichern):

******************** ********** **************************************** *********** *

<% 
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 
%>
Nach dem Login kopieren
4. tele.xml (Adressbuch-XML-Dokument):

<?xml version="1.0" encoding="gb2312"?> 
<中国计算机世界出版服务公司通信录> 
<计算机世界 contactID="1"> 
<部门名称>电话总机</部门名称> 
<电话号码>010-68130909</电话号码> 
<电子邮件>webmaster@ccw.com.cn</电子邮件> 
</计算机世界> 
</中国计算机世界出版服务公司通信录>
Nach dem Login kopieren

****************************************************************************

五、newid.xml(通讯录XML初始化文档):

<?xml version="1.0" encoding="gb2312"?> 
<中国计算机世界出版服务公司通信录> 
<计算机世界 contactID="1"> 
<部门名称>尚未输入</部门名称> 
<电话号码>保密</电话号码> 
<电子邮件>保密</电子邮件> 
</计算机世界> 
</中国计算机世界出版服务公司通信录>
Nach dem Login kopieren

 以上就是用XML数据岛结合Dom制作通讯录的代码实例详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!

相关文章:

php实现在线通讯录功能(附源码),通讯录源码

详解HTML5通讯录获取指定多个人的信息的示例代码

js实现做通讯录的索引滑动显示效果和滑动显示锚点效果

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage