İçindekiler

Telefon uygulamaları oluşturma Yayımlanması WordPress

XML veritabanları


Gelişmiş bu konuda iki tür çok basit XML veritabanları oluşturulması gösterilmiştir.

Okuma XML yalındır olduğunu. Ancak, bu XML doğrudan HTML kaydetmek mümkün değildir ya da Hippani Animator Güvenlik sınırlamalarından dolayı. Sunucu sayfası, web sunucusu ile etkileşim kurmak için gereklidir. C# ile yazılmış ASPX sunucu sayfaları kullandım. Diğer sunucu sayfaları ve dilleri yerine kullanılabilir. ASPX ve C# bu belgenin kapsamı dışında bulunmaktadır. Bu örnekler üzerinde genişletin ve özelleştirmek için daha fazla okuma-ebilmek var olmak gerekli.

Microsoft Windows web sunucusu (IIS) ASPX dosyaları barındırması gerekir. Ayrıca oluşturmak ve dosyaları yazmak için web sunucusu izinlerini ayarlamak gerekir.


Tek kayıt veritabanları

Bu basit veritabanı değerler listesini tutar. Her değeri bir adı vardır.

Örneğin:

HighScore=10000

PlayerName=Zara

Location=France

Web sunucunuzda denilen bir ASPX dosyası oluşturmak XMLDatabase.aspx. Şu kodu kullanın. ASPX dosyası uzantısı ile basit bir metin dosyası olduğunu .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 sunucu sayfası XML dosyasını düzenleme işler.

XML dosyası varsa, ASPX sözlük XML verilerini yükler. Daha sonra herhangi bir yeni değerleri alıp almadığını görmek için denetler. Yeni bir değer ise, sözlüğe ekleyerek, zaten varsa, geçerli değerini güncelleştirin. Sonra sözlüğü temel yeni bir XML dosyası oluşturur. Yeni bir değer varsa, yeni XML dosyası kaydedilir. Son olarak, XML döndürülür.

Sayfayı bir web tarayıcısında açarak sınayabilirsiniz.

Veri ASPX sayfası yükleniyor ve bir ad ve değer de dahil olmak üzere gönderilir.

Örneğin:

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

Veri deposu bir XML dosyasında aşağıdakine benzer olacaktır:


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

ASPX sayfasına veri göndermek nasıl bir örnek bu 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);
}
}

Sadece ASPX dosyası yükleme tarafından alınan veri.

Örneğin:
http://www.MyWebServer.com/XMLDatabase.aspx

ASPX sayfası üzerindeki veri almak nasıl bir örnek bu 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!!!");
}
}

Birden çok kayıt veritabanı

Bu daha karmaşık veritabanı kayıtlarının listesini tutar. Her kayıt, değerlerin bir listesini içerir. Her değeri bir adı vardır.

Örneğin:

Kayıtlı 1:

FirstName=Andrew

Age=23

2. kaydı:

FirstName=Andrea

Age=42

Bu tür bir XML veritabanı 100'e kadar kayıt için etkin bir şekilde çalışacaktır. Daha büyük veritabanları SQL gibi uygun bir veritabanına bağlanabilir veya birden çok XML eğe lüzum ikisinden biri.

Web sunucunuzda denilen başka bir ASPX dosyası oluşturmak XMLDatabase2.aspx. Şu kodu kullanın.


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


Bu ASPX server sayfa daha karmaşıktır. Yine, bir XML dosyası manipülasyon işler.

XML dosyası varsa, ASPX sözlük XML verilerini yükler. Daha sonra herhangi bir yeni değerleri alıp almadığını görmek için denetler. Yeni bir değer ve bir dizin varsa, sözlükte kayıt eklemek, zaten varsa, geçerli değerini güncelleştirin. Sonra sözlüğü temel yeni bir XML dosyası oluşturur. Yeni bir değer varsa, yeni XML dosyası kaydedilir. Son olarak, XML döndürülür.

Sayfayı bir web tarayıcısında açarak sınayabilirsiniz.

ASPX sayfası yükleniyor ve bir dizin, ad ve değer gibi veri gönderilir.

Örneğin:

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

Veri deposu bir XML dosyasında aşağıdakine benzer olacaktır:


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

ASPX sayfasına veri göndermek nasıl bir örnek bu 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);
}
}


Sadece ASPX dosyası yükleme tarafından alınan veri.

Örneğin:
http://www.MyWebServer.com/XMLDatabase.aspx

ASPX sayfası üzerindeki veri almak nasıl bir örnek bu 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!!!");
}
}

Telefon uygulamaları oluşturma Yayımlanması WordPress
Bu belge bir online sözlüğe kullanarak İngilizce'den Tercüme edilmişti. Herhangi bir hata bulursanız özür dileriz. Eğer bize düzeltmeleri yapmak yardım etmek istiyorum. Bir çeviri düzenleyici Hippani Animator (Yardım menüsü içinde). 100'den fazla tümcecikleri düzeltir herkes için ücretsiz lisans anahtarları ver. Daha fazla bilgi için bize ulaşın.