public override object ReadJson(JsonReader reader, Type objectType, JsonSerializer serializer)
{
// maybe have CanReader and a CanWrite methods so this sort of test wouldn't be necessary
if (objectType != typeof(XmlDocument))
throw new JsonSerializationException("XmlNodeConverter only supports deserializing XmlDocuments");
XmlDocument document = new XmlDocument();
XmlNamespaceManager manager = new XmlNamespaceManager(document.NameTable);
XmlNode rootNode;
if (!string.IsNullOrEmpty(DeserializeRootElementName))
{
rootNode = document.CreateElement(DeserializeRootElementName);
document.AppendChild(rootNode);
}
else
{
rootNode = document;
}
if (reader.TokenType != JsonToken.StartObject)
throw new JsonSerializationException("XmlNodeConverter can only convert JSON that begins with an object.");
reader.Read();
DeserializeNode(reader, document, manager, rootNode);
return document;
}