将 XML 中的 反序列化为 List<>

2024-01-04

我在反序列化 WCF Web 服务的结果时遇到问题。该方法返回一个List<RecipeEntity>,它被序列化为 XML,如下所示。当我尝试反序列化时,我只是得到一个异常,如下所示。看来我无法反序列化<ArrayOfRecipe> to List<RecipeEntity>。注意RecipeEntity由合约名称映射到Recipe.

搜索后,我看到许多建议 XmlArray 和 XmlElement 属性,但据我所知,它们不适用于此处GetRecipes()方法。我只看到它们在序列化类的字段上使用。

我知道我可以把List<RecipeEntity> in a RecipeListclass 并返回它,但我宁愿对于任何给定类型直接反序列化为 List 。

例外:

System.InvalidOperationException was caught
  Message=There is an error in XML document (1, 2).
  StackTrace:
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, Object events)
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
       at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader)
       at GroceriesAppSL.Pages.Home.GetRecipesCallback(RestResponse response)
  InnerException: System.InvalidOperationException
       Message=<ArrayOfRecipe xmlns='Groceries.Entities'> was not expected.
       StackTrace:
            at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderList1.Read5_Recipe()
       InnerException: 

数据合约:

[DataContract(Name = "Recipe", Namespace = "Groceries.Entities")]
public class RecipeEntity
{
    [DataMember] public int Id;
    [DataMember] public string Name;
    [DataMember] public string Description;
}

执行:

[ServiceContract]
public interface IMyService
{
    [OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "Recipes/{username}")]
    List<RecipeEntity> GetRecipes(string username);
}

public class MyService : IMyService
{
    public List<RecipeEntity> GetRecipes(string username)
    {
        return _recipeDB.Recipes.Select(ToEntity).ToList();
    }
}

XML 结果示例,仅供说明之用。

<ArrayOfRecipe xmlns="Groceries.Entities" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Recipe>
<Id>139</Id>
<Name>ExampleRecipe</Name>
<Description>5 L milk;4 eggs</Description>
</Recipe>
<Recipe>...</Recipe>
<Recipe>...</Recipe>
<Recipe>...</Recipe>
...
</ArrayOfRecipe>

反序列化代码:

using (var xmlReader = XmlReader.Create(new StringReader(response.Content)))
{
    var xs = new System.Xml.Serialization.XmlSerializer(typeof(List<RecipeEntity>));
    var recipes = (List<RecipeEntity>)xs.Deserialize(xmlReader);
}

您正在使用DataContractSerializer序列化和XmlSerializer反序列化。这两个不使用相同的方法。您必须使用DataContractSerializer在您的反序列化方法中,或者您必须将您的操作或服务标记为XmlSerializerFormat属性(在这种情况下,WCF 将使用XmlSerializer代替DataContractSerializer). DataContract and DataMember属性仅用于DataContractSerializer. XmlSerializer使用它自己定义的属性System.Xml.Serialization命名空间。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 XML 中的 反序列化为 List<> 的相关文章

  • 如何使用 NGEN 二进制文件安装 IronPython 2.0?

    有谁知道如何使用 MSI 包安装带有 NGEN 二进制文件的 IronPython 2 0 这IronPython 官方主页 http www codeplex com IronPython据说NGEN选项将大大改善启动时间 但由于某种原因
  • 序列化对象以进行单元测试

    假设在单元测试中我需要一个对象 其中所有 50 个字段都设置了一些值 我不想手动设置所有这些字段 因为这需要时间而且很烦人 不知何故 我需要获得一个实例 其中所有字段都由一些非空值初始化 我有一个想法 如果我要调试一些代码 在某个时候我会得
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • Python:如何在不先创建整个列表的情况下计算列表的总和?

    通常我们必须 1 声明一个列表 2 使用以下方法计算该列表的总和sum 但现在我希望指定一个以 1 开头 间隔为 4 100 个元素的列表 如下所示 1 5 9 13 17 21 25 29 33 37 我不想涉及数学公式 所以 1 如何在
  • SqlCommand.Dispose() 在 SqlTransaction.Commit() 之前?

    在提交事务之前处理分配给事务的命令是否有效 我自己测试了以下代码 它似乎工作得很好 但这是一个相当小的例子 所以我正在寻找是否有人确实知道的确认 internal static void TestTransaction try Progra
  • 如何使正则表达式匹配不区分大小写?

    我有以下正则表达式加拿大的邮政编码 http en wikipedia org wiki Postal codes in Canada ABCEGHJKLMNPRSTVXY 1 d 1 A Z 1 d 1 A Z 1 d 1 它工作正常 但
  • 为什么 dotnet 的 char.IsLower() 是静态方法?

    这似乎违背了每一个设计准则 接受 T 类型的单个参数的静态方法通常应该只是一个成员方法 这太奇怪了我实际上不得不发布一个StackOverflow问题 https stackoverflow com questions 389100 is
  • & 在 XML 代码中导致错误的符号

    我有以下 XML 代码 用于过滤我的 Crm Dynamics 表单中的查找字段 该过滤器根据输入帐户字段的数据使用 但是 帐户字段可以包含 符号 当出现时 会发生错误 表明 XML 格式不正确 有人有解决问题的办法吗 function a
  • Foursquare - OAuth 身份验证 - .Net 示例

    是否有关于如何使用 Oauth 向 Foursquare 进行身份验证的示例 这里有一个关于如何将 OAuth 与 Foursquare 结合使用的非常好的工作流程摘要 http developer foursquare com docs
  • 如何捕获一个 int

    我正在使用 IL 抛出一个 Int32 并捕获它 这只是出于好奇 我并没有试图实现任何目标 所以请不要告诉我抛出异常而不是 int method private hidebysig static void Main string args
  • 如何使用 .NET 以编程方式沙箱进程

    我计划设计一个系统 本质上允许用户在我的机器上运行 PHP Ruby 等脚本代码 我想将它们放入沙箱中 以防止它们访问机器的关键方面 哪些 NET API 可用于此目的 我计划从主流程创建一个子流程 并希望以编程方式从主流程中沙箱该子流程
  • 如何从 MySQL 数据查询创建 XML 文件?

    我想知道一种仅使用 MySQL 查询创建 XML 文件的方法 根本不使用任何脚本语言 有关于这个主题的书籍 教程吗 UPDATE 我想澄清一下 我想使用 sql 查询将 XML 数据转发到 php 脚本 Here s 关于从 MySQL S
  • ASP.net 出现错误“访问路径被拒绝”。尝试将文件上传到我的 Windows Server 2008 R2 Web 服务器时

    我有一个 ASP NET Web 应用程序 它将文件上传到 Web 服务器上的特定文件夹 本地一切工作正常 但是当我将应用程序部署到 Web 服务器时 我开始收到错误 访问路径 D Attachments myfile doc 被拒绝 我向
  • 如何判断应用程序是否是Web应用程序

    在 Windows 服务和 Web 应用程序中运行的核心程序集中 我需要存储每个用户会话的信息 该服务将具有单个用户会话 并且 Web 应用程序使用 HttpContext Current 我想配置在核心程序集中使用哪种方法 约定优于配置
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • MS Teams 应用程序:访问此应用程序时出现问题

    The users on MS Teams desktop reported multiple issues with our MS Teams app They see the following error on MS Teams De
  • 如何创建可以像 UserControl 一样编辑的 TabPage 子类?

    我想创建一个包含一些控件的 TabPage 子类 并且我想通过设计器来控制这些控件的布局和属性 但是 如果我在设计器中打开子类 我将无法像在 UserControl 上那样定位它们 我不想创建一个带有 UserControl 实例的 Tab
  • 按元组分隔符拆分列表

    我有清单 print L I WW am XX newbie YY ZZ You WW are XX cool YY ZZ 我想用分隔符将列表拆分为子列表 ZZ print new L I WW am XX newbie YY ZZ You
  • 有没有一种简单的方法可以让 Visual Studio 2015 使用特定的 ToolsVersion?

    使用特定版本构建项目或解决方案时msbuild我可以使用以下命令选择早期的 net 工具链 toolsversion or tv switch C Program Files x86 MSBuild 14 0 bin msbuild tv
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f

随机推荐

  • 如何使用spring security(spring boot)实现Ldap身份验证

    我有以下代码 我正在尝试实现 ldap 身份验证 但我认为它没有发生 我的安全配置 EnableWebSecurity Configuration Order SecurityProperties ACCESS OVERRIDE ORDER
  • 如何使用 C# 的 ANTLR 获取 Lexer 和 Parser?

    似乎 ANTLR 支持 C 语言 但我不知道如何生成相关类 我搜索并看到存在 Visual Studio 扩展 但我不支持 2015 那么如何使用 ANTLR 手动为 C 生成词法分析器和解析器 VS 扩展主要用于语法突出显示和编辑器细节
  • jQuery UI 选项卡 - IE 中的圆角选项卡角

    我正在尝试从 AjaxControlToolkit 切换到 jQuery UI 选项卡以获得相当简单的选项卡元素 我 99 都掌握了 CSS 和主题 但我在尝试在 IE 中的选项卡上实现圆角时遇到了困难 jQuery UI 提供了更好的浏览
  • reinterpret_cast 类型双关实际上是未定义的行为吗?

    这种类型的双关语似乎被广泛持有reinterpret cast以某种方式被禁止 正确地说 未定义的行为 即 本国际标准没有提出要求的行为 https timsong cpp github io cppwp n4659 defns undef
  • TFS 传输层安全 1.1/1.2

    我们目前在 Windows Server 2012 R2 上使用 TFS 2015 3 使用 NARTAC 指定使用 TLS1 1 1 2 并禁用 TLS1 0 后 我们的构建层服务器无法连接到应用层服务器 有没有人有同样的问题并解决了 谢
  • 语义相关性算法 - python [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想找到两个同义词集之间的相关性 我遇到了许多算法 如 resnik lin wu palmer path 算法 leacock ch
  • 从 iPhone 上传文件时出现 POSIX 错误 12(“无法分配内存”)

    我正在开发一个 iPhone 应用程序 该应用程序涉及将相机中的完整照片 通常每张照片在 1 5 到 2 0 MB 之间 及其缩略图 小得多 上传到 Amazon S3 缩略图总是成功上传 但是有时完整图像则不然 当它们失败时 它们会失败并
  • Botframework - 调整机器人聊天的宽度[重复]

    这个问题在这里已经有答案了 Is it possible to resize the width of the chat for botframework Currently I m testing on a emulator Basica
  • 使用 Node JS 将数据从 Excel 导入到 MySql

    我想使用 NodeJS 读取 excel 并保存在 MySQL 数据库中 我不知道该使用什么库 我希望能够根据某些行和列读取 Excel 请帮我 您可以使用许多库 sheetjs xlsx excel js etc
  • iOS 的滑块视图

    Can someone help me with this scenario 有一个按钮 点击该按钮时 会滑动打开一个 UIView 点击的按钮仍在其左侧 再次点击此按钮时 使 UIView 向后滑动 你所描述的很简单 我们将从右侧滑入的视
  • RGB 图像的像素强度以及如何将其与整数相乘以查看灰度阴影

    我有一个 RGB 图像 有 4 种不同的颜色黑色 0 0 0 作为背景 绿色 106 136 93 蓝色 64 224 208 和棕色 168 124 85 当我将图像读取为灰度并使用 np unique 时 它会返回一个巨大的像素强度列表
  • 使用异步承诺处理 Guzzle 超时

    我正在发送多个异步承诺 并将 guzzle 超时设置为 30 我想知道如何捕获是否有任何承诺超时 以便我可以报告此错误 请参阅下面的代码 本质上 我想在超时之前使用我能做的任何响应 并捕获那些超时的响应 foreach apiRequest
  • 为什么在生产环境中运行 Go 应用程序时建议使用“go build”而不是“go run”?

    我有一个 Dockerfile 用来编译 Go 应用程序go build 我研究了一下 确实go build推荐用于生产 但是我无法找到正确的答案 我明白go run创建一个临时文件 并在应用程序终止时进行清理 但是如果我使用Docker
  • 从另一个线程调用 CFRunLoopStop 是否安全?

    我的 主要是 POSIX 应用程序的 Mac 版本生成一个子线程 该子线程调用 CFRunLoopRun 来执行事件循环 以从 MacOS 获取网络配置更改事件 当需要收拾东西离开时 主线程在子线程的运行循环上调用 CFRunLoopSto
  • 如何从 JSF 生成 JSON 响应?

    我创建了一个页面 我想在其中从 JSF 页面获取 JSON 响应 但是当我尝试获取页面时 它显示了整个 html 页面 value 21 name Mick Jagger value 43 name Johnny Storm value 4
  • 图数据库(neo4j)与关系数据库。需要设计帮助

    我必须与一个开源项目合作 biojava http biojava org wiki Main Page 但我对某些性能不满意 我想花一些时间来改进它 例如 我有一个以这种方式编码的文本数据库 chrX Cufflinks exon 651
  • 如何在Project中找到UIWebView并替换为WKWebView?

    我们收到这封电子邮件来自 电子邮件受保护 cdn cgi l email protection上传构建时 我们发现您的应用程序 应用程序名称 1 0 5 0 最近交付存在一个或多个问题 请更正以下问题 然后重新上传 ITMS 90809 已
  • 如何更改另一个程序图标?

    我如何在 C 中更改另一个程序图标 不是我的 我想在 Windows 上执行此操作 我的一个朋友正在用 VB 编程 他制作了一个可以更改另一个 exe 图标的程序 那么我怎样才能在 C 中做到这一点呢 准备好更新的资源后 使用 LoadIc
  • 如何将 Pandas DataFrame 更改为多列列?

    我有一个 Pandas DataFrame 其列索引如下所示 A1 A2 A3 B1 B2 B3 the data 我想做的就是将此 DataFrame 的列索引更改为多索引列索引 如下面的格式所示 而不修改数据 只是简单地在索引中添加上一
  • 将 XML 中的 反序列化为 List<>

    我在反序列化 WCF Web 服务的结果时遇到问题 该方法返回一个List