1

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属性を使用してドキュメント全体を再生成し、代わりにそれを使用して逆シリアル化しますか?

4

0 に答える 0