Tartalomjegyzék

A telefonos alkalmazások létrehozása A közzétételi WordPress

XML-adatbázisok


Speciális témakör bemutatja, hogyan lehet két fajta nagyon egyszerű XML-adatbázisok létrehozásához.

Olvasat XML van egyenes továbbít. Azonban lehetetlen mentése XML-ről HTML vagy Hippani Animator biztonsági korlátozások miatt. Egy szerver oldalon szükséges-hoz egymásra hat-val a pókháló szolgál. Általunk használt írt C# ASPX lapok. Más kiszolgáló oldalak és nyelvek is lehet használni. ASPX és C# van túl ezen dokumentáció céljához. Megszokott, és terjessze ki ezeket a példákat, hogy szükség lehet További olvasnivalók.

Szüksége lesz egy Microsoft Windows web server (IIS) az ASPX-fájlok. Szüksége lesz is, hozhat létre és írjon fájlok webkiszolgálói engedélyek beállításához.


Egyetlen rekord adatbázisok

Ez az egyszerű adatbázis értékek listáját tárolja. Az egyes értékek névvel rendelkezik.

Például:

HighScore=10000

PlayerName=Zara

Location=France

A webkiszolgáló, az úgynevezett ASPX-fájl létrehozása XMLDatabase.aspx. Használja a következő kódot. Egy ASPX-fájl egy egyszerű szöveges fájl kiterjesztése .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());
%>


Az ASPX-lap kezeli a manipuláció XML-fájl.

Ha az XML-fájl már létezik, akkor az ASPX betölti az XML-adatokat egy szótár. Majd azt ellenőrzi, hogy ha új értékeket nem érkezett-e. Ha van egy új értéket, hozzáadni a szótárhoz, frissítése az aktuális értéket, ha az már létezik. Aztán teremt egy új XML reszelő azon alapszik a szótár. Ha van egy új, hozzáadott érték, az új XML-fájl mentése. Végül az XML-kódot ad vissza.

A tesztoldal megnyitjuk a akármi pókháló legel.

Adatok betöltése az ASPX-lap, beleértve a nevét és értékét küldi.

Például:

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

Az adatok lesznek tárolva egy XML fájl, amely úgy néz ki mint ez:


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

Ez csak egy példa, hogyan lehet adatokat küldeni az ASPX-lap az 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);
}
}

Adatokat kézhez egyszerűen az ASPX-fájl betöltése.

Például:
http://www.MyWebServer.com/XMLDatabase.aspx

Ez csak egy példa, hogyan lehet eljutni az ASPX-lap az adatokat a 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!!!");
}
}

Több rekord adatbázis

Az összetettebb adatbázis tárolja a bejegyzések listáját. Minden egyes rekord tartalmazza az értékek listáját. Az egyes értékek névvel rendelkezik.

Például:

1. bejegyzés:

FirstName=Andrew

Age=23

2. rekord:

FirstName=Andrea

Age=42

Ez a fajta XML adatbázis fog működni hatékonyan 100 rekordok. Nagyobb adatbázisok sem lenne szükség több XML-fájlokat, vagy kell csatlakoztatni egy megfelelő adatbázis, például az SQL.

Hozzon létre egy másik ASPX fájlt a webkiszolgáló, az úgynevezett XMLDatabase2.aspx. Használja a következő kódot.


<%@ 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());
%>


Az ASPX-lap server sokkal összetettebb. Újra ez kezeli a manipuláció XML-fájl.

Ha az XML-fájl már létezik, akkor az ASPX betölti az XML-adatokat egy szótár. Majd azt ellenőrzi, hogy ha új értékeket nem érkezett-e. Ha van egy új értéket, és az index, add hozzá a rekord a szótárban, frissítése az aktuális értéket, ha az már létezik. Aztán teremt egy új XML reszelő azon alapszik a szótár. Ha van egy új, hozzáadott érték, az új XML-fájl mentése. Végül az XML-kódot ad vissza.

A tesztoldal megnyitjuk a akármi pókháló legel.

Adatok betöltése az ASPX-lap és beleértve egy index, nevét és értékét küldi.

Például:

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

Az adatok lesznek tárolva egy XML fájl, amely úgy néz ki mint ez:


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

Ez csak egy példa, hogyan lehet adatokat küldeni az ASPX-lap az 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);
}
}


Adatokat kézhez egyszerűen az ASPX-fájl betöltése.

Például:
http://www.MyWebServer.com/XMLDatabase.aspx

Ez csak egy példa, hogyan lehet eljutni az ASPX-lap az adatokat a 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!!!");
}
}

A telefonos alkalmazások létrehozása A közzétételi WordPress
Ez a dokumentáció volt fordította, használ egy online fordító. Elnézést, ha bármilyen hibát találsz. Ha azt szeretné, hogy segítsen, hogy elvégezzük a szükséges javításokat. Van egy fordítás-szerkesztő, a Hippani Animator (a Súgó menü). Adunk ki szabad engedély kulcsok, bárki, aki javítja a több mint 100 mondatok. További részletekért kérjük, lépjen kapcsolatba velünk.