2016-03-31 4 views
0

私はPHPで書かれたWebサービスと一緒に動作するJavaで書かれたクライアントを持っています。しかし今、私はPHP webserviceをC#-webserviceに置き換える必要があり、Java-Clientを変更することはできません。私はすでに解決策を得ています。応答パラメータの1つは配列でなければなりません。 はPHPで応答があった。配列の要素がある場合C#webserviceのPHPのような配列

<elements>ABC</elements> 

をしかし:

<elements SOAP-ENC:arrayType="xsd:string[2]" xsi:type="ns1:stringArray"> 
    <item xsi:type="xsd:string">ABC</item> 
    <item xsi:type="xsd:string">XYZ</item> 
</elements> 

配列に一つだけの要素がある場合は、C#のからの応答は次のようになりますと動作します応答は次のようになります。

<elements> 
    <string>ABC</string> 
    <string>XYZ</string> 
</elements> 

クライアントはエラーをスローします。

PHPで配列のように動作するC#で配列を作成する方法はありますか?


C#の-codeは次のとおりです。

[System.Xml.Serialization.SoapElementAttribute(IsNullable = true)] 
public string[] elements { 
    get { 
     publicationsField = new string[] { "ABC", "XYZ" }; 
     return publicationsField; 
    } 
    set { 
     this.publicationsField = value; 
    } 
} 
+0

あなたのC#コードと誰かが、おそらくそれを修正するためにどのように伝えることができるようになります表示します。 – Barmar

答えて

0

私はあなたがXMLとして応答を解析し、<string>が設定されているかどうかを確認しようとすると可能性があるとします。

もしそうなら、それらをすべてループ内で解析して配列に追加します。それ以外の場合は、1つの要素を持つ配列を作成します。その要素の値は<elements>です。

(編集:ここではいくつかの擬似コードは、これを行う方法のアイデアのためのOPの要求ごとのようだ)

xml = ParseXML(GetXML()) 
elements = xml[elements] 

for each element in elements 
    if sub element named string exists 
     // it exists 
    else 
     // nope 
+0

「文字列が設定されているかどうかを確認する」とはどういう意味ですか? – Andreas

+0

''要素があなたのXMLに設定されているかどうかをチェックすることができます。 –

+0

私はTCPMonで応答を記録しました.3番目のコード例のように見えます。したがって、は空ではありませんが、Javaクライアントは「SimpleDeserializerは、デリシアル化しようとしていたもので期待されていない子要素を検出しました。今私は、が配列の一部であり、子ではないことを伝える方法を探しています。 – Andreas

関連する問題