پایگاه داده های XML
این موضوع پیشرفته نشان می دهد که چگونه برای ایجاد دو نوع پایگاه داده XML بسیار ساده است.
XML خواندن مستقیم به جلو است. با این حال، آن را غیر ممکن XML ذخیره به طور مستقیم از HTML است یا Hippani Animator با توجه به محدودیت های امنیتی. صفحه سرور ارتباط برقرار کردن با وب سرور مورد نیاز است. ما صفحات ASPX سرور در سی شارپ نوشته شده استفاده کرده ایم. صفحات سرویس دهنده ها و زبان های دیگر به جای آن می تواند استفاده شود. ASPX و سی شارپ فراتر از محدوده این مستندات هستند. برای سفارشی کردن و گسترش در این نمونه، مطالعه بیشتر ممکن است لازم باشد.
شما نیاز به مایکروسافت ویندوز سرور وب سایت (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!!!");
}
}
این اسناد از انگلیسی با استفاده از مترجم آنلاین ترجمه شده است. اگر شما هر گونه اشتباه ما عذرخواهی. اگر شما می خواهم برای کمک به ما در ایجاد اصلاحات. وجود دارد ویرایشگر ترجمه در Hippani Animator (در منوی راهنما). ما از کلید مجوز رایگان برای هر کسی که بیش از 100 عبارات تصحیح دادن. لطفا برای کسب اطلاعات بیشتر با ما تماس بگیرید.