如何在 WCF 服务中获取肥皂信封属性值

本文关键字:肥皂 属性 获取 WCF 服务 | 更新日期: 2023-09-27 18:37:25

如何在 wcf 服务中获取 SOAP xml 属性值?

  <ns3:NotifRQ Status="Commit" 
               xmlns:ns2="http://www.dddd.com/df/dd/" 
               xmlns:ns3="http://www.dd.org/OTA/">
      <ns3:rev>dfdfkkl</ns3:rev>
      <ns3:change>dfdfkkl</ns3:change>
  </ns3:NotifRQ>

这是我现在拥有的数据协定代码:

[DataContract(Name = "NotifRQ", Namespace = "http://www.dd.org/OTA/")]
public class NotifRQ
{
    [DataMember(Name = "Status")]
    public string ResStatus;
}

如何在 WCF 服务中获取肥皂信封属性值

Status属性必须是NotifRQ类的字段或属性,并且需要指示 WCF 使用不太理想的 XmlSerializer 而不是 DatacontractSerializer,如此处所述。您可以通过在类上使用 XmlSerializerFormat 属性来实现这一点。

现在可以将XmlAttribute应用于类的字段或属性,该字段或属性获取或设置 xml 元素上的属性值。

按如下方式创建和批注类:

[DataContract(Namespace="http://www.dd.org/OTA/")]
[XmlSerializerFormat]
public class NotifRQ 
{
   [DataMember, XmlAttribute] 
   public string Status="Commit";
   [DataMember]
   public string  rev;
   [DataMember]
   public string  change;
}

上面的类将写入和读取以下线路格式:

<?xml version="1.0" encoding="utf-16"?>
<NotifRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
         Status="Commit">
  <rev>foo</rev>
</NotifRQ>