Περιεχόμενα

Τη δημιουργία τηλέφωνο Apps Εκδόσεις κατά WordPress

Βάσεις δεδομένων XML


Αυτό το προηγμένο θέμα δείχνει πώς να δημιουργήσετε δύο είδη πολύ απλών βάσεων δεδομένων XML.

Ανάγνωση XML είναι απλό. Ωστόσο, είναι αδύνατο να αποθηκεύσετε την XML απευθείας από HTML ή Hippani Animator λόγω των περιορισμών ασφαλείας. Μια σελίδα διακομιστή καλείται να αλληλεπιδρούν με το web server. Έχουμε χρησιμοποιήσει ASPX σελίδες διακομιστή γραμμένη σε C#. Άλλες σελίδες διακομιστή και γλώσσες, θα μπορούσε να χρησιμοποιηθεί αντί. ASPX και C# είναι πέρα από το πεδίο εφαρμογής αυτής της τεκμηρίωσης. Για να προσαρμόσετε και επεκτείνετε σε αυτά τα παραδείγματα, μπορεί να απαιτηθούν περαιτέρω ανάγνωση.

Θα χρειαστείτε ένα Microsoft Windows διακομιστή web (IIS) για να φιλοξενήσει τα αρχεία ASPX. Θα πρέπει επίσης να ρυθμίσετε δικαιώματα διακομιστή web για να δημιουργήσετε και να γράφουν αρχεία.


Ενιαία ρεκόρ βάσεις δεδομένων

Αυτή η απλή βάση δεδομένων αποθηκεύει μια λίστα τιμών. Κάθε τιμή έχει ένα όνομα.

Για παράδειγμα:

HighScore=10000

PlayerName=Zara

Location=France

Δημιουργήστε ένα αρχείο ASPX στο διακομιστή web που ονομάζεται XMLDatabase.aspx. Χρησιμοποιήστε τον ακόλουθο κώδικα. Ένα αρχείο ASPX είναι απλά ένα αρχείο κειμένου με την επέκταση .aspx.


<%@ Page Language="C#" %>
<%@ Import namespace="System.IO" %>
<%@ Import namespace="System.Xml" %>
<%@ Import namespace="System.Collections.Generic" %>
<%
string DataFilename
=Server.MapPath("Data.xml");
Dictionary
<string,string> MyData=new Dictionary<string,string>();
bool DataChanged
=false;

// Load the xml data into a dictionary
if(File.Exists(DataFilename)){
XmlDocument Doc
=new XmlDocument();
Doc.Load
(DataFilename);
XmlNode N
=Doc.DocumentElement.FirstChild;
while(N!=null){ //Iterate through the nodes
if(!MyData.ContainsKey(N.Name)){ //If the dictionary does not contain the node name, add it and the text it contains.
MyData.Add
(N.Name,N.InnerText);
}
N
=N.NextSibling;
}
}

//Add any new Name and Value values sent to the page.
string Name
=Context.Request["Name"];
string Value
=Context.Request["Value"];
if(!String.IsNullOrEmpty(Name)){
if(!MyData.ContainsKey(Name)){ //If the dictionary does not contain the name, add it and the value.
MyData.Add
(Name,Value);
}else{ //Replace the value if the name already exists in the dictionary.
MyData
[Name]=Value;
}
DataChanged
=true;
}

//Generate a new xml file.
StringBuilder NewXML
=new StringBuilder();
NewXML.Append
("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n");
NewXML.Append
("<Data>\r\n");
Dictionary
<string,string>.Enumerator Enum=MyData.GetEnumerator();
while(Enum.MoveNext()){
NewXML.Append
("<"+Enum.Current.Key+">"+HttpUtility.HtmlEncode(Enum.Current.Value)+"</"+Enum.Current.Key+">\r\n");
}
NewXML.Append
("</Data>\r\n");

//Save the data file if it has been changed.
if(DataChanged){
StreamWriter SW
= new StreamWriter(DataFilename);
SW.WriteLine
(NewXML.ToString());
SW.Close
();
}

//Return the xml file.
Context.Response.ContentType
= "text/xml";
Response.Write
(NewXML.ToString());
%>


Διακομιστή σελίδα ASPX χειρίζεται ο χειρισμός ενός αρχείου XML.

Εάν υπάρχει το αρχείο XML, στη συνέχεια, το ASPX φορτώνει τα δεδομένα XML σε ένα λεξικό. Στη συνέχεια ελέγχει για να δει εάν έχουν παραληφθεί των νέων τιμών. Αν υπάρχει μια νέα τιμή, προσθήκη στο λεξικό, να ενημερώσετε την τρέχουσα τιμή, αν υπάρχει ήδη. Στη συνέχεια, δημιουργεί ένα νέο αρχείο XML με βάση το λεξικό. Εάν υπήρχε μια νέα προστιθέμενη αξία, τότε το νέο αρχείο XML είναι αποθηκευμένη. Τέλος, επιστρέφεται το XML.

Μπορείτε να ελέγξετε την σελίδα ανοίγοντάς το σε οποιοδήποτε web browser.

Τα δεδομένα αποστέλλονται φόρτωση της σελίδας ASPX και συμπεριλαμβάνοντας ένα όνομα και μια αξία.

Για παράδειγμα:

http://www.MyWebServer.com/XMLDatabase.aspx?Name=HighScore&Value=10000

http://www.MyWebServer.com/XMLDatabase.aspx?Name=PlayerName&Value=Zara

http://www.MyWebServer.com/XMLDatabase.aspx?Name=Location&Value=France

Τα δεδομένα θα είναι κατάστημα σε ένα αρχείο XML που μοιάζει με αυτό:


<Data>
<HighScore>10000</HighScore>
<PlayerName>Zara</PlayerName>
<Location>France</Location>
</Data>

Αυτό είναι ένα παράδειγμα για το πώς να στείλετε δεδομένα στην ASPX σελίδα Hippani Animator.


var Name="HighScore";
var Value="10000";
OpenXMLUrl("http://www.MyWebServer.com/XMLDatabase.aspx?Name="+escape(Name)+"&Value="+escape(Value),Result);
function Result(XML){
if(XML.status==200){
alert("Saved.");
}else{
alert("Error Code "+XML.status);
}
}

Στοιχείο δεν παραλαμβάνεται απλά φορτώνοντας το αρχείο ASPX.

Για παράδειγμα:
http://www.MyWebServer.com/XMLDatabase.aspx

Αυτό είναι ένα παράδειγμα του πώς να πάρει τα δεδομένα από τη σελίδα ASPX στο Hippani Animator.


OpenXMLUrl("http://www.MyWebServer.com/XMLDatabase.aspx",Result);
function Result(XML){
if(XML.status==200){
var Node=XML.documentElement.firstChild;
var List="List:\r\n";
while(Node!=null){
List
+=Node.nodeName+"="+Node.firstChild.nodeValue+"\r\n";
Node
=Node.nextSibling;
}
alert(List);
}else{
alert(XML.status+" Error!!!");
}
}

Πολλαπλών αρχείων βάσεων δεδομένων

Πιο περίπλοκη αυτή η βάση δεδομένων αποθηκεύει μια λίστα των εγγραφών. Κάθε εγγραφή περιέχει μια λίστα τιμών. Κάθε τιμή έχει ένα όνομα.

Για παράδειγμα:

Εγγραφή 1:

FirstName=Andrew

Age=23

Αρχείο 2:

FirstName=Andrea

Age=42

Αυτός ο τύπος της βάσης δεδομένων XML θα εργαστούν αποτελεσματικά για μέχρι 100 Εγγραφές. Μεγαλύτερες βάσεις δεδομένων θα πρέπει είτε τα πολλαπλάσια αρχεία XML ή να συνδέονται με μια σωστή βάση δεδομένων όπως SQL.

Δημιουργήστε ένα άλλο αρχείο ASPX στο διακομιστή web που ονομάζεται XMLDatabase2.aspx. Χρησιμοποιήστε τον ακόλουθο κώδικα.


<%@ Page Language="C#" %>
<%@ Import namespace="System.IO" %>
<%@ Import namespace="System.Xml" %>
<%@ Import namespace="System.Collections.Generic" %>
<%
string DataFilename
=Server.MapPath("Data2.xml");
Dictionary
<int,Dictionary<string,string>> MyData=new Dictionary<int,Dictionary<string,string>>();
bool DataChanged
=false;
Dictionary
<string,string> Record=null;
int Index
=0;

// Load the xml data into a dictionary
if(File.Exists(DataFilename)){
XmlDocument Doc
=new XmlDocument();
Doc.Load
(DataFilename);
XmlNode N
=Doc.DocumentElement.FirstChild,M=null;
while(N!=null){ //Iterate through the record nodes
Index
=Convert.ToInt32(N.Attributes["Index"].Value); //Get the index value of the record.
Record
=new Dictionary<string,string>();
M
=N.FirstChild;
while(M!=null){ //Iterate through the value nodes
if(!Record.ContainsKey(M.Name)){ //If the record does not contain the node name, add it and the text it contains.
Record.Add
(M.Name,M.InnerText);
}
M
=M.NextSibling;
}
if(!MyData.ContainsKey(Index)){ //If the dictionary does not contain the record index, add it.
MyData.Add
(Index,Record);
}
N
=N.NextSibling;
}
}

//Add any new Name and Value values sent to the page. Use the Index value to locate the correct record.
string Name
=Context.Request["Name"];
string Value
=Context.Request["Value"];
Index
=Convert.ToInt32(Context.Request["Index"]);
if(!String.IsNullOrEmpty(Name)&&Index>0){
if(MyData.ContainsKey(Index)){ //If the dictionary contains the record index.
Record
=MyData[Index];
}else{ //If the dictionary does not contain the record. Create a new empty record and add it.
Record
=new Dictionary<string,string>();
MyData.Add
(Index,Record);
}
if(!Record.ContainsKey(Name)){ //If the record does not contain the name, add it and the value.
Record.Add
(Name,Value);
}else{ //Replace the value if the name already exists in the record.
Record
[Name]=Value;
}
DataChanged
=true;
}

//Generate a new xml file.
StringBuilder NewXML
=new StringBuilder();
NewXML.Append
("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n");
NewXML.Append
("<Data>\r\n");
Dictionary
<int,Dictionary<string,string>>.Enumerator Enum=MyData.GetEnumerator();
Dictionary
<string,string>.Enumerator EnumRecord;
while(Enum.MoveNext()){
NewXML.Append
("<Record Index=\""+Enum.Current.Key+"\">\r\n");
EnumRecord
=Enum.Current.Value.GetEnumerator();
while(EnumRecord.MoveNext()){
NewXML.Append
("<"+EnumRecord.Current.Key+">"+HttpUtility.HtmlEncode(EnumRecord.Current.Value)+"</"+EnumRecord.Current.Key+">\r\n");
}
NewXML.Append
("</Record>\r\n");
}
NewXML.Append
("</Data>\r\n");

//Save the data file if it has been changed.
if(DataChanged){
StreamWriter SW
= new StreamWriter(DataFilename);
SW.WriteLine
(NewXML.ToString());
SW.Close
();
}

//Return the xml file.
Context.Response.ContentType
= "text/xml";
Response.Write
(NewXML.ToString());
%>


Αυτή η σελίδα ASPX διακομιστή είναι πιο περίπλοκη. Και πάλι, με τον οποίο χειρίζεται ο χειρισμός ενός αρχείου XML.

Εάν υπάρχει το αρχείο XML, στη συνέχεια, το ASPX φορτώνει τα δεδομένα XML σε ένα λεξικό. Στη συνέχεια ελέγχει για να δει εάν έχουν παραληφθεί των νέων τιμών. Αν υπάρχει μια νέα τιμή και ένα ευρετήριο, προσθέσετε στην εγγραφή στο λεξικό, να ενημερώσετε την τρέχουσα τιμή, αν υπάρχει ήδη. Στη συνέχεια, δημιουργεί ένα νέο αρχείο XML με βάση το λεξικό. Εάν υπήρχε μια νέα προστιθέμενη αξία, τότε το νέο αρχείο XML είναι αποθηκευμένη. Τέλος, επιστρέφεται το XML.

Μπορείτε να ελέγξετε την σελίδα ανοίγοντάς το σε οποιοδήποτε web browser.

Δεδομένα αυτά αποστέλλονται από τη φόρτωση της σελίδας ASPX και μαζί με ένα δείκτη, όνομα και αξία.

Για παράδειγμα:

http://www.MyWebServer.com/XMLDatabase2.aspx?Index=1&Name=FirstName&Value=Andrew

http://www.MyWebServer.com/XMLDatabase2.aspx?Index=1&Name=Age&Value=23

http://www.MyWebServer.com/XMLDatabase2.aspx?Index=2&Name=FirstName&Value=Andrea

http://www.MyWebServer.com/XMLDatabase2.aspx?Index=2&Name=Age&Value=42

Τα δεδομένα θα είναι κατάστημα σε ένα αρχείο XML που μοιάζει με αυτό:


<Data>
<Record Index="1">
<FirstName>Andrew</FirstName>
<Age>23</Age>
</Record>
<Record Index="2">
<FirstName>Andrea</FirstName>
<Age>42</Age>
</Record>
</Data>

Αυτό είναι ένα παράδειγμα για το πώς να στείλετε δεδομένα στην ASPX σελίδα Hippani Animator.


var Index=1;
var Name="FirstName";
var Value="Andrew";
OpenXMLUrl("http://www.MyWebServer.com/XMLDatabase2.aspx?Index="+Index+"&Name="+escape(Name)+"&Value="+escape(Value),Result);
function Result(XML){
if(XML.status==200){
alert("Saved.");
}else{
alert("Error Code "+XML.status);
}
}


Στοιχείο δεν παραλαμβάνεται απλά φορτώνοντας το αρχείο ASPX.

Για παράδειγμα:
http://www.MyWebServer.com/XMLDatabase.aspx

Αυτό είναι ένα παράδειγμα του πώς να πάρει τα δεδομένα από τη σελίδα ASPX στο Hippani Animator.


OpenXMLUrl("http://www.MyWebServer.com/XMLDatabase2.aspx",Result);
function Result(XML){
if(XML.status==200){
var Record=XML.documentElement.firstChild,Node=null;
var List="List:\r\n";
while(Record!=null){
List
+="Record: "+Record.attributes.getNamedItem("Index").value+"\r\n";
Node
=Record.firstChild;
while(Node!=null){
List
+=" "+Node.nodeName+"="+Node.firstChild.nodeValue+"\r\n";
Node
=Node.nextSibling;
}
Record
=Record.nextSibling;
}
alert(List);
}else{
alert(XML.status+" Error!!!");
}
}

Τη δημιουργία τηλέφωνο Apps Εκδόσεις κατά WordPress
Η τεκμηρίωση αυτή Μεταφράστηκε από τα Αγγλικά, χρησιμοποιώντας ένα online Μεταφραστής. Ζητούμε συγγνώμη αν βρείτε οποιαδήποτε λάθη. Αν θα θέλατε να μας βοηθήσουν να κάνουμε διορθώσεις. Υπάρχει ένα επεξεργαστή μεταφράσεων σε Hippani Animator (στο μενού "Βοήθεια"). Δίνουμε δωρεάν άδεια κλειδιά στους όποιος διορθώνει πάνω από 100 φράσεις. Επικοινωνήστε μαζί μας για περισσότερες λεπτομέρειες.