XMLメッセージを送信するサードパーティアプリケーションとの統合に取り組んでいます。それらのXMLは次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE theirObj SYSTEM "theirDTD-2.0.dtd">
<theirObj>
<properties>
<datasource>ThirdParty</datasource>
<datetime>2009-03-05T14:45:39</datetime>
</properties>
<data>
...
</data>
</theirObj>
XmlSerializerを使用して逆シリアル化しようとしています。
public theirObj Deserialize(string message) {
if( string.IsNullOrWhiteSpace( message ) ) {
throw new ArgumentNullException( "message" );
}
XmlSerializer xmlSerializer = new XmlSerializer( typeof(theirObj ) );
TextReader textReader = new StringReader( message );
using (XmlReader xmlReader = new XmlTextReader( textReader )) {
object deserializedObject = xmlSerializer.Deserialize( xmlReader );
theirObj ent = deserializedObject as theirObj ;
if (ent == null) {
throw new InvalidCastException("Unable to cast deserialized object to an theirObj object. {0}".FormatInvariant( deserializedObject));
}
return ent;
}
}
}
xsd.exeを使用してオブジェクトを生成しました。
<!DOCTYPE>
タグを削除すると、正常に逆シリアル化されます。
<!DOCTYPE>
XmlSerializerにタグを無視させる方法はありますか?
XmlSerializerを渡す前にそれを取り除くことができることは知っていますが、必要がなければ、そのレベルのXML操作には行きたくありません。