namespace DotNetOAuth { using System; using System.Collections.Generic; using System.Text; using System.Xml; /// /// An XmlWriter-looking object that actually saves data to a dictionary. /// class DictionaryXmlWriter { /// /// Creates an that actually writes to an instance. /// /// The dictionary to save the written XML to. /// The XmlWriter that will save data to the given dictionary. internal static XmlWriter Create(IDictionary dictionary) { return new PseudoXmlWriter(dictionary); } /// /// Writes out a dictionary as if it were XML. /// class PseudoXmlWriter : XmlWriter { IDictionary dictionary; string key; StringBuilder value = new StringBuilder(); internal PseudoXmlWriter(IDictionary dictionary) { this.dictionary = dictionary; } public override void WriteStartElement(string prefix, string localName, string ns) { key = localName; value.Length = 0; } public override void WriteString(string text) { if (!string.IsNullOrEmpty(key)) { value.Append(text); } } public override void WriteEndElement() { if (key != null) { dictionary[key] = value.ToString(); key = null; value.Length = 0; } } public override WriteState WriteState { get { return WriteState.Element; } } public override void WriteStartAttribute(string prefix, string localName, string ns) { key = null; } public override void WriteEndAttribute() { } public override void Close() { } #region Unimplemented methods public override void Flush() { throw new NotImplementedException(); } public override string LookupPrefix(string ns) { throw new NotImplementedException(); } public override void WriteBase64(byte[] buffer, int index, int count) { throw new NotImplementedException(); } public override void WriteCData(string text) { throw new NotImplementedException(); } public override void WriteCharEntity(char ch) { throw new NotImplementedException(); } public override void WriteChars(char[] buffer, int index, int count) { throw new NotImplementedException(); } public override void WriteComment(string text) { throw new NotImplementedException(); } public override void WriteDocType(string name, string pubid, string sysid, string subset) { throw new NotImplementedException(); } public override void WriteEndDocument() { throw new NotImplementedException(); } public override void WriteEntityRef(string name) { throw new NotImplementedException(); } public override void WriteFullEndElement() { throw new NotImplementedException(); } public override void WriteProcessingInstruction(string name, string text) { throw new NotImplementedException(); } public override void WriteRaw(string data) { throw new NotImplementedException(); } public override void WriteRaw(char[] buffer, int index, int count) { throw new NotImplementedException(); } public override void WriteStartDocument(bool standalone) { throw new NotImplementedException(); } public override void WriteStartDocument() { throw new NotImplementedException(); } public override void WriteSurrogateCharEntity(char lowChar, char highChar) { throw new NotImplementedException(); } public override void WriteWhitespace(string ws) { throw new NotImplementedException(); } #endregion } } }