2016-08-18 63 views
0

我們在XML中有以下SOAP請求,它被髮送到我的Web服務。 我想分析多個「Firstname」的例子,例如到數組中,但不一定。 不幸的是,我不能改變請求,只有網絡服務。什麼是以下客戶端XML的WCF C#等價物?

以下客戶端XML的WCF C#等價物是什麼?

<foo:NameHent> 
    <foo1:Date>1988-03-05</foo1:Date> 
    <foo1:Firstname>John</foo1:Firstname> 
    <foo1:Firstname>Michael</foo1:Firstname> 
    <foo1:Lastname>Doe</foo1:Lastname> 
</foo:NameHent> 

下不起作用:

public partial class NameHentParams 
{ 
    private System.DateTime dateField; 
    private string[] firstnameField; 
    private string lastnameField; 

    public System.DateTime Date 
    { 
     get { return this.dateField; } 
     set { this.dateField = value; } 
    } 

    public string[] Firstname 
    { 
     get { return this.firstnameField; } 
     set { this.firstnameField = value; } 
    } 

    public string Lastname 
    { 
     get { return this.lastnameField; } 
     set { this.lastnameField = value; } 
    } 
} 
+0

這可能有助於http://stackoverflow.co m/questions/11677123/wcf-same-name-tags-in-xml-response –

+0

這就是全部?名稱空間定義(xmlns)在哪裏? –

+0

@Sal Al你有特定的答案嗎?我無法通過簡單地將字符串[]更改爲列表 Godspark

回答

0
var xml1 = 
      "<?xml version=\"1.0\" encoding=\"utf-8\"?><foo:NameHent xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:foo1=\"http://sample.com\" xmlns:foo=\"http://example.com\"><foo1:Firstname>John</foo1:Firstname><foo1:Firstname>Michael</foo1:Firstname><foo1:Lastname>Doe</foo1:Lastname><foo1:Date>1988-03-05</foo1:Date></foo:NameHent>"; 

XmlSerializer xmlSerializer = new XmlSerializer(typeof(NameHent)); 
     NameHent c = xmlSerializer.Deserialize(new StringReader(xml1)) as NameHent; 


public class NameHent 
{ 
    [XmlElement(Namespace = "http://sample.com")] 
    public string [] Firstname; 

    [XmlElement(Namespace = "http://sample.com")] 
    public string Lastname; 

    [XmlElement(Namespace = "http://sample.com")] 
    public string Date; 

    [XmlNamespaceDeclarations] 
    public XmlSerializerNamespaces xmlns = new XmlSerializerNamespaces(); 

    public NameHent() 
    { 
     xmlns.Add("foo", "http://example.com"); 
     xmlns.Add("foo1", "http://sample.com"); 
    } 
} 
+0

希望這有助於。 –

+0

不知道我應該在代碼中更改什麼。解析是「自動」完成的,並且只要外部客戶端調用特定方法就會觸發解析。我也使用ServiceContract,OperationContract和最後一個MessageContract進行通信。 – Godspark

+0

我剛剛創建了一個WCF應用程序,它似乎按預期工作。 –

0

我使用WCF測試客戶端,但你也可以使用SOAPUI測試,

enter image description here

[ServiceContract] 
public class NameHent 
{ 
    [DataMember] 
    public string[] Firstname; 

    [DataMember] 
    public string Lastname; 

    [DataMember] 
    public string Date; 
} 
+0

您是否也可以在您的答案中包含SOAP請求和NameHent類? – Godspark

+0

我已添加NameHent類,請求由WCF Test Client生成 –

+0

這裏提出的解決方案是什麼?我嘗試刪除getters和setters,但它沒有任何區別。 – Godspark