Зміст

Створення додатків телефон Публікації на WordPress

Баз даних XML


Цей розширений розділ демонструє, як створити два види дуже простий бази даних XML.

Читання XML є прямо вперед. Тим не менш, неможливо зберегти XML безпосередньо з HTML або Hippani Animator через обмеження безпеки. Сервер сторінки потрібно взаємодіяти з веб-сервера. Ми використовували сторінках ASPX сервер, написаний на C#. Інші сторінки сервера і мови можуть бути використані замість. ASPX і C#, виходить за рамки цієї документації. Щоб настроїти та розширити на ці приклади, подальше читання можуть знадобитися.

Вам знадобиться веб-сервер Microsoft Windows (IIS), щоб приймають файлів ASPX. Вам також потрібно буде встановити веб-сервер дозволи створювати і записувати файли.


Одномісний записів бази даних

Ця проста база даних зберігає список значень. Кожне значення має назву.

Наприклад:

HighScore=10000

PlayerName=Zara

Location=France

Створити ASPX-файл на сервері під назвою 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.

Ви можете перевірити на сторінці, відкривши його в будь-який веб-браузер.

Дані пересилаються завантаження 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 файл на сервері під назвою 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.

Ви можете перевірити на сторінці, відкривши його в будь-який веб-браузер.

Дані пересилаються завантаження 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!!!");
}
}

Створення додатків телефон Публікації на WordPress
Ця документація була перекладені з англійської, за допомогою онлайн-перекладачем. Приносимо свої вибачення, якщо ви знайдете будь-які помилки. Якщо ви хотіли б допомогти нам внести виправлення. Немає перекладу редактором в Hippani Animator (у меню «Довідка»). Ми роздавати безкоштовна ліцензія клавіш будь-кому, хто виправляє понад 100 фраз. Будь ласка, зв'яжіться з нами для більш докладної інформації.