I am trying to deserialize the output of .NET's XML doc comment using an XmlSerializer. For reference, the output of xml documentation looks like:
<?xml version="1.0"?>
<doc>
<assembly>
<name>Apt.Lib.Data.Product</name>
</assembly>
<members>
<member name="P:MyNamespace.MyType.MyProperty">
<summary>See <see cref="T:MyNamespace.MyOthertype"/> for more info</summary>
</member>
...
</members>
</doc>
The object I'm using to generate the serializer is:
[XmlRoot("doc")]
public class XmlDocumentation
{
public static readonly XmlSerializer Serializer = new XmlSerializer(typeof(XmlDocumentation));
[XmlElement("assembly")]
public AssemblyName Assembly { get; set; }
[XmlArray("members")]
[XmlArrayItem("member")]
public List<Member> Members { get; set; }
public class AssemblyName
{
[XmlElement("name")]
public string Name { get; set; }
}
public class Member
{
[XmlAttribute("name")]
public string Name { get; set; }
[XmlElement("summary")]
public string Summary { get; set; }
}
}
The problem is when the serializer encounters the embedded see cref tag. In that case the serializer throws the following exception:
System.InvalidOperationException : There is an error in XML document (147, 27). ----> System.Xml.XmlException : Unexpected node type Element. ReadElementString method can only be called on elements with simple or empty content. Line 147, position 27.
How can I capture the entire content of the summary tag as a string during deserialization?