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
}
}
}