2016-08-18 40 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

相关问题