xmlの逆シリアル化によってJavaWebサービスが吐き出すxmlをフィードしようとしていますが、私が持っているxmlファイルに名前空間がないようです。WSDLから生成されたC#クラスは次のとおりです。
[XmlTypeAttribute(Namespace="http://mynamespace.com")]
public class Customer {
[XmlElementAttribute(IsNullable=true)]
public string customerNo {
get; set;
}
[XmlElementAttribute(IsNullable=true)]
public string customerType {
get; set;
}
}
名前空間の定義を参照してください?実際のXMLファイルは名前空間宣言を見逃しており、次のようになります。
<?xml version="1.0"?>
<Customer>
<customerNumber>1234</customerNumber>
<customerType />
</CreditCard>
Xmlデシリアライザーはルートオブジェクトをデシリアライズしますが、すべてのプロパティはnullです。XmlTypeAttributeを削除するか、名前空間を追加してxmlファイルを調整することで、なんとか機能させることができました。
<xml version="1.0"?>
<Customer>
<customerNumber xmlns="http://mynamespace.com">1234</creditCardNo>
<customerType xsi:nil="true" xmlns="http://mynamespace.com" />
</Customer>
問題は、実際のxmlファイルが大きいため、手動で実行したくないし、属性も削除したくないということです。それを機能させる最も簡単な方法は何ですか?適切なxmlns属性を使用してドキュメント全体を再生成し、代わりにそれを使用して逆シリアル化しますか?