You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中通过XmlRoot与XmlElement在模型接收XML节点值失败求助

WCF接收XML模型值失败的问题解决

你当前的实现方式是可行的,无法输出值的核心原因是XML数据的标签大小写不匹配,导致反序列化失败。

问题根源

XML是大小写敏感的,你提交的XML中存在标签大小写不一致的问题:

<query>
    <Username>test1</username> <!-- 起始标签为<Username>,但闭合标签是小写的</username> -->
    <Password>pass1</Password>
</query>

模型中通过[XmlElement(ElementName = "Username")]指定了元素名为Username,但XML的闭合标签是小写的username,两者不匹配,导致反序列化时无法将值映射到username属性,最终输出为空。

修正方案

将XML中的闭合标签修改为与起始标签一致的大小写即可:

<query>
    <Username>test1</Username>
    <Password>pass1</Password>
</query>

代码配置验证

你的现有代码配置已经符合WCF接收XML并反序列化为模型的要求:

  • 服务接口添加了[XmlSerializerFormat],确保使用XmlSerializer进行序列化,与模型上的XmlRoot/XmlElement特性匹配
  • WebInvoke设置BodyStyle = WebMessageBodyStyle.Bare,与你提交的XML结构(根节点直接为<query>)完全适配
  • 模型的特性配置正确对应了XML的节点名称

修正XML标签大小写后,Console.WriteLine()就能正常输出对应的用户名和密码值,无需改为直接接收XML字符串的方式。

内容的提问来源于stack exchange,提问作者Jessica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 00:45:37