Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF XML结构-如何删除包装器节点?_Xml_Wcf - Fatal编程技术网

WCF XML结构-如何删除包装器节点?

WCF XML结构-如何删除包装器节点?,xml,wcf,Xml,Wcf,使用列表对象时遇到问题: [DataContract] public class Recipe { [DataMember(Name="Allergies")] public List<AllergyModel> Allergies { get; set; } } [DataContract] public class AllergyModel { public string Allergy { get; set; } } [Dat

使用列表对象时遇到问题:

[DataContract]
public class Recipe
{
        [DataMember(Name="Allergies")]
        public List<AllergyModel> Allergies { get; set; }
}

[DataContract]    
public class AllergyModel
{
    public string Allergy { get; set; }
}
[DataContract]
公共课食谱
{
[DataMember(Name=“Allergies”)]
公共列表过敏{get;set;}
}
[数据合同]
公共类变态反应模型
{
公共字符串{get;set;}
}
如何使生成的XML不包括AllergyModel节点?当我阅读Recipe参数时,Allergies list属性为null,因为在原始XML中,该结构没有AllergyModel节点

<Allergies>
    <a:AllergyModel>
        <a:Allergy>nuts</a:Allergy>
    </a:AllergyModel>
    <a:AllergyModel>
        <a:Allergy>wheat</a:Allergy>
    </a:AllergyModel>
</Allergies>

坚果
小麦

尝试改用自定义集合:

[CollectionDataContract(Name = "Allergies", ItemName = "Allergy")]
public class AllergyList : List<string>
{
    ...
}
[CollectionDataContract(Name=“Allergies”,ItemName=“Allergy”)]
公共类AllergyList:列表
{
...
}

使用此集合而不是
列表
。重要的是,您可以在自定义集合中传递项目的名称。

您可以使用MessageContract属性,并将IsWrapped参数设置为false

谢谢,我的结构现在是nutswheat,但当我检查public XElement SubmitRecipe(配方配方)配方时。过敏症的计数为0,有什么想法吗?我的示例如下(我收到的是简单的数据类型,而不是集合)。坚果小麦我不确定我是否理解当前的问题。嗨,凯文,仅供我参考,你能告诉我为什么messageContract不适合你的情况吗?