XML 入力文字列を取得し、未加工の XML を部分的に保持するオブジェクトにデシリアライズしたいと考えています。
<SetProfile>
  <sessionId>A81D83BC-09A0-4E32-B440-0000033D7AAD</sessionId>
  <profileDataXml>
    <ArrayOfProfileItem>
      <ProfileItem>
        <Name>Pulse</Name>
        <Value>80</Value>
      </ProfileItem>
      <ProfileItem>
        <Name>BloodPresure</Name>
        <Value>120</Value>
      </ProfileItem>
    </ArrayOfProfileItem>
  </profileDataXml>
</SetProfile>
クラス定義:
public class SetProfile
{
    public Guid sessionId;
    public string profileDataXml;
}
逆シリアル化の構文が次のようになることを願っています
string inputXML = "..."; // the above XML
XmlSerializer xs = new XmlSerializer(typeof(SetProfile));
using (TextReader reader = new StringReader(inputXML))
{
    SetProfile obj = (SetProfile)xs.Deserialize(reader);
    // use obj ....
}
ただし、XMLSerializer は例外をスローし、< profileDataXml > の子孫を生の XML 文字列の「profileDataXml」フィールドに出力しません。
そのような逆シリアル化を実装する方法はありますか?