|
using System;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
namespace Alexandria.Forums.Web.Navigation
{
[System.Xml.Serialization.XmlRootAttribute(ElementName="page", IsNullable=false)]
public class Page
{
#region Declarations
private Page _parent;
#endregion
#region Properties
public Page Parent
{
get { return this._parent; }
set { this._parent = value; }
}
#endregion
#region Schema Properties
[System.Xml.Serialization.XmlElementAttribute("page")]
public Page[] Items;
[System.Xml.Serialization.XmlAttributeAttribute(AttributeName="url", Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public string Url;
[System.Xml.Serialization.XmlAttributeAttribute(AttributeName="text", Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public string Text;
[System.Xml.Serialization.XmlAttributeAttribute(AttributeName="key", Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public string Key;
[System.Xml.Serialization.XmlAttributeAttribute(AttributeName="businessObject", Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public string BusinessObject;
[System.Xml.Serialization.XmlAttributeAttribute(AttributeName="businessKey", Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public string BusinessKey;
[System.Xml.Serialization.XmlAttributeAttribute(AttributeName="textKey", Form=System.Xml.Schema.XmlSchemaForm.Qualified)]
public string TextKey;
#endregion
}
[System.Xml.Serialization.XmlRootAttribute(ElementName="sitemap", IsNullable=false)]
public class SiteMap
{
[System.Xml.Serialization.XmlElementAttribute("page")]
public Page[] Items;
#region Serialize
public string Serialize()
{
XmlSerializer serializer = new XmlSerializer(this.GetType());
MemoryStream memoryStream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(memoryStream, Encoding.UTF8);
writer.Formatting = Formatting.None;
serializer.Serialize(writer, this);
StreamReader reader = new StreamReader(memoryStream);
memoryStream.Position = 0;
string result = reader.ReadToEnd();
writer.Close();
return result;
}
#endregion
#region Deserialize
public static SiteMap Deserialize(string xmlString)
{
XmlSerializer serializer = new XmlSerializer(typeof(SiteMap));
StringReader reader = new StringReader(xmlString);
SiteMap siteMap = serializer.Deserialize(reader) as SiteMap;
siteMap.SetParents(null, siteMap.Items);
return siteMap;
}
#endregion
#region Set Parents
private void SetParents(Page current, Page[] items)
{
if (items != null)
{
foreach(Page page in items)
{
page.Parent = current;
this.SetParents(page, page.Items);
}
}
}
#endregion
}
}
|
|
|
|