Cơ Sở Dữ Liệu XML - Các Hướng Dẫn - Tìm Hiểu - Hippani

Tạo ứng dụng điện thoại Xuất bản trên WordPress

Cơ sở dữ liệu XML

Chủ đề nâng cao này chứng tỏ làm thế nào để tạo ra hai loại cơ sở dữ liệu XML rất đơn giản.Đọc XML là thẳng về phía trước. Tuy nhiên, nó là không thể để tiết kiệm XML trực tiếp từ HTML hoặc Hippani Animator vì những hạn chế bảo mật. Trang chủ là cần thiết để tương tác với các máy chủ web. Chúng tôi đã sử dụng ASPX trang phục vụ được viết bằng C#. Các máy chủ trang và ngôn ngữ có thể được sử dụng để thay thế. ASPX và C# là vượt ra ngoài phạm vi của tài liệu này. Để tuỳ chỉnh và mở rộng trên những ví dụ, đọc thêm có thể được yêu cầu.Bạn sẽ cần một Microsoft Windows web server (IIS) để lưu trữ các tập tin ASPX. Bạn cũng sẽ cần phải thiết lập quyền truy cập máy chủ web để tạo và ghi tập tin.

Cơ sở dữ liệu hồ sơ duy nhất

Này cơ sở dữ liệu đơn giản lưu trữ một danh sách các giá trị. Giá trị mỗi có một tên.Ví dụ:HighScore=10000PlayerName=ZaraLocation=FranceTạo một tập tin ASPX trên máy chủ web của bạn được gọi là XMLDatabase.aspx. Sử dụng mã sau đây. Một tập tin ASPX là chỉ đơn giản là một tập tin văn bản với phần mở rộng .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 dictionaryif(File.Exists(DataFilename)){XmlDocument Doc=new XmlDocument();Doc.Load(DataFilename);XmlNode N=Doc.DocumentElement.FirstChild;while(N!=null){//Iterate through the nodesif(!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());%>

Trang ASPX server xử lý các thao tác của một tập tin XML.Nếu các tệp tin XML tồn tại, sau đó ASPX tải dữ liệu XML thành một từ điển. Sau đó, nó sẽ kiểm tra để xem nếu bất kỳ giá trị mới đã được nhận được. Nếu có một giá trị mới, thêm nó vào từ điển, Cập Nhật giá trị hiện tại nếu nó đã tồn tại. Nó sau đó tạo ra một tập tin XML mới dựa trên từ điển. Nếu có một giá trị mới được thêm vào, sau đó tập tin XML mới đã lưu. Cuối cùng, các XML được trả lại.Bạn có thể kiểm tra trang bằng cách mở nó trong bất kỳ trình duyệt web.Dữ liệu được gửi bằng cách tải trang ASPX và bao gồm một tên và giá trị.Ví dụ:http://www.MyWebServer.com/XMLDatabase.aspx?Name=HighScore&Value=10000http://www.MyWebServer.com/XMLDatabase.aspx?Name=PlayerName&Value=Zarahttp://www.MyWebServer.com/XMLDatabase.aspx?Name=Location&Value=FranceCác dữ liệu sẽ là lưu trữ trong một tập tin XML trông như thế này:

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

Đây là một ví dụ về làm thế nào để gửi dữ liệu đến trang ASPX trong 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);}}

Nhận dữ liệu bằng cách đơn giản chỉ cần tải tập tin ASPX.Ví dụ:http://www.MyWebServer.com/XMLDatabase.aspxĐây là một ví dụ về làm thế nào để có được dữ liệu từ trang ASPX trong 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!!!");}}

Nhiều cơ sở dữ liệu hồ sơ

Này cơ sở dữ liệu phức tạp hơn mua sắm danh sách hồ sơ. Mỗi bản ghi có chứa một danh sách các giá trị. Giá trị mỗi có một tên.Ví dụ:Hồ sơ 1:FirstName=AndrewAge=23Hồ sơ 2:FirstName=AndreaAge=42Loại cơ sở dữ liệu XML sẽ làm việc hiệu quả tối đa 100 Records. Cơ sở dữ liệu lớn hơn hoặc là sẽ cần nhiều file XML hoặc được kết nối với cơ sở dữ liệu thích hợp như SQL.Tạo một tập tin ASPX trên máy chủ web của bạn được gọi là XMLDatabase2.aspx. Sử dụng mã sau đây.

<%@ 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 dictionaryif(File.Exists(DataFilename)){XmlDocument Doc=new XmlDocument();Doc.Load(DataFilename);XmlNode N=Doc.DocumentElement.FirstChild,M=null;while(N!=null){//Iterate through the record nodesIndex=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 nodesif(!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());%>

Sửa máy chủ ASPX là phức tạp hơn. Một lần nữa, nó xử lý các thao tác của một tập tin XML.Nếu các tệp tin XML tồn tại, sau đó ASPX tải dữ liệu XML thành một từ điển. Sau đó, nó sẽ kiểm tra để xem nếu bất kỳ giá trị mới đã được nhận được. Nếu có một giá trị mới và một chỉ số, thêm nó vào các bản ghi trong từ điển, Cập Nhật giá trị hiện tại nếu nó đã tồn tại. Nó sau đó tạo ra một tập tin XML mới dựa trên từ điển. Nếu có một giá trị mới được thêm vào, sau đó tập tin XML mới đã lưu. Cuối cùng, các XML được trả lại.Bạn có thể kiểm tra trang bằng cách mở nó trong bất kỳ trình duyệt web.Dữ liệu được gửi bằng cách tải trang ASPX và bao gồm một chỉ số, tên và giá trị.Ví dụ:http://www.MyWebServer.com/XMLDatabase2.aspx?Index=1&Name=FirstName&Value=Andrewhttp://www.MyWebServer.com/XMLDatabase2.aspx?Index=1&Name=Age&Value=23http://www.MyWebServer.com/XMLDatabase2.aspx?Index=2&Name=FirstName&Value=Andreahttp://www.MyWebServer.com/XMLDatabase2.aspx?Index=2&Name=Age&Value=42Các dữ liệu sẽ là lưu trữ trong một tập tin XML trông như thế này:

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

Đây là một ví dụ về làm thế nào để gửi dữ liệu đến trang ASPX trong 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);}}

Nhận dữ liệu bằng cách đơn giản chỉ cần tải tập tin ASPX.Ví dụ:http://www.MyWebServer.com/XMLDatabase.aspxĐây là một ví dụ về làm thế nào để có được dữ liệu từ trang ASPX trong 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!!!");}}
Tạo ứng dụng điện thoại Xuất bản trên WordPress
Tài liệu này được dịch từ tiếng Anh, bằng cách sử dụng một dịch giả trực tuyến. Chúng tôi xin lỗi nếu bạn tìm thấy bất kỳ sai lầm. Nếu bạn muốn giúp chúng tôi làm cho chỉnh. Đó là một trình soạn thảo bản dịch ở Hippani Animator (trong trình đơn trợ giúp). Chúng tôi cho ra miễn phí giấy phép phím cho ai đó sửa chữa hơn 100 cụm từ. Xin vui lòng liên hệ để biết thêm chi tiết.

Từ khóa » Xml Cơ Sở Dữ Liệu