将 XmlSerializer 与根元素中的数组一起使用

2024-02-13

我有一个类似于以下内容的 XML 文档:

<scan_details>
    <object name="C:\Users\MyUser\Documents\Target1.doc">
        ...
    </object>
    <object name="C:\Users\MyUser\Documents\Target2.doc">
        ...
    </object>
    ...
</scan_details>

我希望使用System.Xml.Serialization属性来简化 XML 反序列化。我遇到的问题是我无法弄清楚如何指定根节点包含数组。

我尝试创建以下类:

[XmlRoot("scan_details")]
public class ScanDetails
{
    [XmlArray("object")]
    public ScanDetail[] Items { get; set; }
}

public class ScanDetail
{
    [XmlAttribute("name")]
    public string Filename { get; set; }
}

但是,当我将 XML 反序列化到ScanDetails反对Items阵列仍然存在null.

如何反序列化根节点中的数组?


你应该使用[XmlElement], 并不是[XmlArray]装饰 Items 属性 - 它已经是一个数组,并且您只想设置元素名称。

public class StackOverflow_12924221
{
    [XmlRoot("scan_details")]
    public class ScanDetails
    {
        [XmlElement("object")]
        public ScanDetail[] Items { get; set; }
    }

    public class ScanDetail
    {
        [XmlAttribute("name")]
        public string Filename { get; set; }
    }

    const string XML = @"<scan_details> 
                            <object name=""C:\Users\MyUser\Documents\Target1.doc""> 
                            </object> 
                            <object name=""C:\Users\MyUser\Documents\Target2.doc""> 
                            </object> 
                        </scan_details> ";

    public static void Test()
    {
        XmlSerializer xs = new XmlSerializer(typeof(ScanDetails));
        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(XML));
        var obj = xs.Deserialize(ms) as ScanDetails;
        foreach (var sd in obj.Items)
        {
            Console.WriteLine(sd.Filename);
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 XmlSerializer 与根元素中的数组一起使用 的相关文章

  • 如何在我的应用程序中使用 Windows Key

    Like Windows Key E Opens a new Explorer Window And Windows Key R Displays the Run command 如何在应用程序的 KeyDown 事件中使用 Windows
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 写入和读取文本文件 - C# Windows 通用平台应用程序 Windows 10

    有用 但在显示任何内容之前 您必须在文本框中输入内容 我想那是因为我使用了 TextChanged 事件处理程序 如果我希望它在没有用户交互的情况下显示文本文件的内容 我应该使用哪个事件处理程序 因此 我想在按下按钮时将一些数据写入 C W
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 在 ASP.Net Core 2.0 中导出到 Excel

    我曾经使用下面的代码在 ASP NET MVC 中将数据导出到 Excel Response AppendHeader content disposition attachment filename ExportedHtml xls Res
  • 使用安全函数在 C 中将字符串添加到字符串

    我想将文件名复制到字符串并附加 cpt 但我无法使用安全函数 strcat s 来做到这一点 错误 字符串不是空终止的 我确实设置了 0 如何使用安全函数修复此问题 size strlen locatie size nieuw char m
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 将 System.Windows.Forms.Keys 序列转换为 Char

    有没有办法转换由 Keys 枚举表示的击键序列 即System Windows Forms Keys 在一个字符中 例如 Keys Oem4进而Keys A产生 char 它一定存在于 WinAPI 中的某个地方 因为当我在文本框中按下按键
  • 如何使用 PHP 获取列中的所有值?

    我一直在到处寻找这个问题 但仍然找不到解决方案 如何从 mySQL 列中获取所有值并将它们存储在数组中 例如 表名称 客户 列名称 ID 名称 行数 5 我想获取此表中所有 5 个名称的数组 我该如何去做呢 我正在使用 PHP 我试图 SE
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 如何在内存中存储分子?

    我想将分子存储在内存中 这些可以是简单的分子 Methane CH4 C H bond length 108 7 pm H H angle 109 degrees But also more complex molecules like p
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 在 ASP.NET 中将事件冒泡为父级

    我已经说过 ASP NET 中的层次结构 page user control 1 user control 2 control 3 我想要做的是 当控件 3 它可以是任何类型的控件 我一般都想这样做 让用户用它做一些触发回发的事情时 它会向
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反
  • 如何连接字符串和常量字符?

    我需要将 hello world 放入c中 我怎样才能做到这一点 string a hello const char b world const char C string a hello const char b world a b co
  • 为什么 strtok 会导致分段错误?

    为什么下面的代码给出了Seg 最后一行有问题吗 char m ReadName printf nRead String s n m Writes OK char token token strtok m 如前所述 读取字符串打印没有问题 但

随机推荐

  • 无法从 Java 中的 cookie 获取值。值包含逗号。

    我在从包含逗号的 cookie 中获取值时遇到问题 它返回的不是完整字符串 而是被截断到第一个逗号的字符串 例如 cookie value var1 var2 var3 String cookieVal cookie getValue co
  • 在一列数字中,找到最接近某个目标值的值

    假设我在列中有一些数字数据 例如 11 100000 36 829657 6 101642 11 400000 36 402069 5 731998 11 700000 35 953025 5 372652 12 000000 35 482
  • SyndicateFeed 将命名空间前缀从 a10 更改为atom

    我正在使用 System ServiceModel Synmination SynspirationFeed 创建一个 rss 提要 从中我得到以下内容
  • 具有多个资源的 Kubernetes 应用程序单个 YAML

    目前我使用 docker compose 来安排我的应用程序 该应用程序由 3 个 dockerimages 一个 postgresql 数据库和 2 个 Wildfly 应用程序服务器 前端 ui 后端 组成 My docker comp
  • jquery Draggable:如何限制可拖动区域?

    我有一个可拖动的对象 div 和一些可放置的对象 表TD 我希望用户将我的可拖动对象拖动到这些可放置 TD 之一 我以这种方式启用可拖动和可放置 draggable draggable droppable droppable 问题是 用户可
  • C++ 中的静态全局变量

    我想通过 malloc 方法创建一个整数数组 我希望这个数组是全局的并且可以在我的程序中的任何地方使用 我将代码放入一个头文件中 如下所示 static int pieces 然后我有一个函数可以用我想要的数字填充它 该函数位于命名空间中
  • 链接到网页的特定部分

    如何创建指向我无法控制的另一个网站上的长网页的一部分的链接 我认为您可以在链接末尾使用 partofpage 的变体 有什么建议么 只需附加一个 随后是该人的 ID a 标签 或其他 HTML 标签 例如 section 你想要达到的目标
  • 聚合物和 PHP

    你好 我刚刚开始学习聚合物 我使用 PHP 收集数据如下 我可以将其嵌入到 DIV 中并显示一些数据 但我想将这段代码放入带有我可以导入的参数的 Polymer 元素中 并将 json 数据也放入我可以用来填充页面的外部 Polymer 元
  • Enterprise Library 5.0 和命令超时

    我正在使用以下代码 想知道如果使用企业库的CreateSprocAccessor 我们是否需要设置命令超时 如果不需要 那么如何管理超时 var accessor sqlDatabase CreateSprocAccessor
  • this.$http vueJs 未设置

    我正在玩 vueJS 并尝试从 ajax 请求中获取一些数据 这是我的代码 new Vue el recipeList ready function this fetchRecipes methods fetchRecipes functi
  • 在 Pandas 中将rolling_apply 与需要 2 个参数的函数一起使用

    我正在尝试将 rollapply 与需要 2 个参数的公式一起使用 据我所知 计算 kendall tau 相关性 包括标准平局校正 的唯一方法 除非您从头开始创建公式 是 gt gt gt import scipy gt gt gt x
  • C++ 遗传算法的最佳数据结构?

    我需要实现一个针对我的问题 大学项目 定制的遗传算法 第一个版本将其编码为短矩阵 每条染色体的位数x人口大小 这是一个糟糕的设计 因为我声明了一个短路 但仅使用 0 和 1 值 但这只是一个原型 并且按预期工作 现在是时候开发一个新的了 改
  • 用于计算上下文无关语法的 FIRST 和 FOLLOW 集的算法 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要一种算法来计算语法的 FIRST 和 FOLLOW 集 是否有一个简单的算法或简单的代码来计算这些 大多数编译器教科书和解析算法
  • 计算 3D 网格的体积

    我厌倦了计算 3D 物体 立方体 圆柱体 的体积 有人可以帮忙吗 有这个问题吗 问题是 如何计算物体的体积 基于三角形的坐标 我的班级做得不好 有人能帮我吗 提高班级水平 thanks public class Algorithm priv
  • 我可以在我的应用程序中同时使用 GCM 和 FCM 吗?

    我有一个Android项目 其中实现了GCM 后端 服务器 已经使用 GCM 进行了适当的编码 现在是否可以在我的项目中添加 firebase FCM 并与 GCM 并行工作 我无法迁移到 FCM 因为不可能更改我的后端代码 因为它是一个大
  • 如何在react-native项目中启用jsconfig.json

    我正在设置一个新的 React Native 项目 并希望通过将 jsconfig json 文件添加到项目的根目录来配置应用程序以支持使用绝对路径导入模块 但该应用程序无法解析这些模块 我需要做一些额外的设置吗 我使用react nati
  • 如何将后代 UrlHelper 类注入 WebViewPage 以启用缓存清除?

    我已经覆盖了UrlHelper Content 方法 现在我希望使用我的实现而不是默认的UrlHelper class 如何配置 MVC 来告诉它要注入哪个类WebViewPage Url财产 更新1 这个想法很简单 捆绑包通过向 url
  • PageObject with Ruby - 在文本字段中设置文本仅适用于主文件

    我正在自动化一个网站 该网站有一个页面 其中包含通过单选按钮选择的选项列表 当选择其中一个无线电时 会出现一个文本字段和一个选择列表 我创建了一个文件 test contracting rb 通过它我执行测试 ruby test contr
  • 将数组广播为不同的形状(添加“假”维度)

    在 python 中 使用 numpy 我可以将数组广播为不同的形状 gt gt gt import numpy as np gt gt gt a np array 2 3 4 gt gt gt b np zeros 3 2 gt gt g
  • 将 XmlSerializer 与根元素中的数组一起使用

    我有一个类似于以下内容的 XML 文档