XmlSerializer を使用して、.NET の XML ドキュメント コメントの出力を逆シリアル化しようとしています。参考までに、xml ドキュメントの出力は次のようになります。
<?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>
シリアライザーを生成するために使用しているオブジェクトは次のとおりです。
[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; }
}
}
問題は、シリアライザーが埋め込みの see cref タグに遭遇したときです。その場合、シリアライザーは次の例外をスローします。
System.InvalidOperationException : XML ドキュメントにエラーがあります (147、27)。----> System.Xml.XmlException : 予期しないノード タイプ Element. ReadElementString メソッドは、単純なコンテンツまたは空のコンテンツを持つ要素でのみ呼び出すことができます。行 147、位置 27。
逆シリアル化中に要約タグの内容全体を文字列としてキャプチャするにはどうすればよいですか?