XML - 将属性反序列化为 Xml 子树

2024-02-07

当我反序列化 xml 字符串时,我需要在名为prop2.

My XML:

<MyObj>
  <prop1>something</prop1>
  <prop2>
    <RSAKeyValue>
      <Modulus>...</Modulus>
      <Exponent>...</Exponent>
    </RSAKeyValue>
  </prop2>
  <prop3></prop3>
</MyObj>

我的对象:

public class MyObj
{
    [XmlElement("prop1")]
    public string prop1 { get; set; }

    [XmlText]
    public string prop2 { get; set; }

    [XmlElement(ElementName = "prop3", IsNullable = true)]
    public string prop3 { get; set; }
}

我正在反序列化使用XmlSerializer, 像这样:

var serializer = new XmlSerializer(typeof(T));
return (T)serializer.Deserialize(new StringReader(myXmlString));

我尝试使用[XmlText]将 XML 文本保存在prop2但我只是得到null.

我需要做什么来保存<RSAKeyValue><Modulus>...</Modulus><Exponent>...</Exponent></RSAKeyValue>就像文本中的prop2?


XmlText将给出 XML 编码为文本的值 ("&gt;prop2&lt;...") see XmlText属性 https://msdn.microsoft.com/en-us/library/system.xml.serialization.xmltextattribute(v=vs.110).aspx

默认情况下,XmlSerializer 将类成员序列化为 XML 元素。但是,如果将 XmlTextAttribute 应用于成员,XmlSerializer 会将其值转换为 XML 文本。这意味着该值被编码到 XML 元素的内容中。

一种可能的解决方案 - 使用XmlNode作为财产类型:

public class MyObj
{
    [XmlElement("prop1")]
    public string prop1 { get; set; }

    public XmlNode prop2 { get; set; }

    [XmlElement(ElementName = "prop3", IsNullable = true)]
    public string prop3 { get; set; }
}

var r = (MyObj)serializer.Deserialize(new StringReader(myXmlString));
Console.WriteLine(r.prop2.OuterXml);

或者,您可以使整个对象实现自定义 Xml 序列化,或者具有与 XML 匹配(正常读取)的自定义类型,并具有将该对象表示为 XML 字符串的附加属性。

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

XML - 将属性反序列化为 Xml 子树 的相关文章

随机推荐

  • 将对象添加到 ArrayList 指定索引处

    我认为这是一个相当简单的问题 但我不知道如何正确地做到这一点 我有一个空的数组列表 ArrayList list new ArrayList 我有一些对象 我想在其中添加对象 并且每个对象必须位于某个位置 然而 有必要将它们按每种可能的顺序
  • Inner Join 是否存在性能问题?

    目前我在我的 sp 中使用了很多内部联接 大约 7 个 它对 sp 性能有任何影响吗 左外连接是否比内连接提供更好的性能 另一件事是 如果我连接两个表 a 和 b 其中列 id 和 id1 都不可为空 我想在这里我可以进行内部联接 因为这些
  • 在 HTML 选择标签中找到默认选择的选项?

    我在网上找到了清除表单的代码 但它没有用于选择框的内容 使用 jquery 当我重置表单时 我尝试添加代码来选择选择框中的默认选项 我认为找到默认值的唯一方法是查找 SELECTED 选项所在的位置 然后我发现 当用户选择其他内容时 jqu
  • 如何确保即使在异常终止时也会调用 UnhookWindowsHookEx?

    不幸的是 MSDN 对此还不够清楚 我正在编写一个使用全局钩子的程序 我担心如果程序异常终止 崩溃 被用户杀死等 会发生什么 当进程终止时 Windows 是否会自动取消进程安装的全局挂钩 如果没有 是否可以在另一个进程中调用UnhookW
  • 升级到 bootstrap-sass 3.2.0 时出现问题

    将 bootstrap sass gem 升级到时是否还需要引用 配置其他内容 gt 3 2 0 使用 RubyMine 6 3 作为编辑器 并在 Gemfile 中添加以下内容 ruby 2 1 2 gem rails 4 1 1 gem
  • Jinja2 按空格分割字符串

    我正在使用 Jinja2 模板引擎 pelican 我有一个字符串说 a 1 我正在寻找一种方法将该字符串分成两部分 使用空格作为分隔符 所以我正在寻找的最终结果是一个变量 它以数组的形式保存两个值 例如str 0 计算结果为 a str
  • 为分层模型创建高效的数据库查询(django)

    考虑这个 django 模型 class Source models Model Some other fields type models ForeignKey Type class Type models Model Some othe
  • WSO2 CEP - 内存不足

    我们在 CEP 上看到内存不足错误 线程转储显示大约有 32000 个线程在监视器上休眠 此外 即使 CEP JVM 选项指定在内存不足时生成 HeapDump 我们也没有看到生成任何堆转储 请指教 CEP JVM Xms256m Xmx1
  • JavaScript 获取 HTML 表的行数

    如何使用 JavaScript 获取 HTML 的行数table有id和名字吗 Given a table thead tr th Header th tr thead tbody tr td Row 1 td tr tr td Row 2
  • id() 函数的用途是什么?

    I read Python 2 文档 http docs python org 2 library functions html id并注意到id 功能 返回对象的 身份 这是一个整数 或长整数 保证该对象在其生命周期内是唯一且恒定的 具有
  • asp.net core 从构建中排除文件

    我正在尝试将 Protractor 添加到我的 asp net core 应用程序中 我通过 npm 添加它 它安装了 selenium webdriver 其中包含一个文件Page aspx cs 这导致构建错误 但我的项目甚至不需要编译
  • 我可以配置并行扩展使用的线程数吗?

    我目前正在使用并行扩展 它是 Net Rx 的反应式扩展 http msdn microsoft com en us devlabs ee794896 aspx 我相信它们也可以通过 Net 4 beta 版本获得 1 有没有办法确定实际使
  • 如何修复顶部和底部边距折叠?

    我是 CSS 新手 我试图了解如何修复以下行 使其不适用于顶部和底部边距 然而 它对于侧边距来说效果很好 contents margin 10px 10px 10px 10px 例子 http jsfiddle net LCTeU http
  • AngularJS 摘要循环究竟是如何工作的?

    我是 AngularJS 的新手 我正在通过教程学习它 我对与此相关的概念有些疑问摘要循环由 Angular 提供 我的应用程序由这两个文件组成 1 索引 html
  • File.copy() 方法不支持给定路径的格式错误

    当我尝试通过 C 中的 file copy 方法将文件从本地计算机复制到本地网络中的其他计算机时 我遇到错误 不支持给定路径的格式 我正在使用以下语法 File Copy C temp sample txt DEMO PC D DummyF
  • 无法使用传单渲染矢量切片 (.mbtiles) 文件

    我正在尝试渲染一些从 OpenMapTile 下载的本地存储和基于矢量的图块 我这样做的原因是因为我的最终应用程序只能在无法连接到互联网的计算机上运行 我已经阅读了许多关于传单是否可以渲染基于矢量的图块的不同内容 但从一些示例来看它似乎可以
  • Makefile 中的函数

    我正在编写一个包含很多重复内容的 Makefile 例如 debug ifort Linux if UNAME Linux then MAKE FC ifort FFLAGS difort PETSC FFLAGS TARGET LEXT
  • IE8浏览器模式与文档模式

    谁能解释一下 IE8 和 IE8 之间的区别浏览器模式 and 文档模式简单来说 是什么导致浏览器模式发生变化 是什么导致文档模式改变 如果用户通过开发人员工具更改模式 即使刷新页面 更改是否仍然存在 我问这个问题是因为我们正在这里做一些
  • 使用输入 fn 在 Tensorflow 估计器中进行预测

    我使用来自的教程代码https github com tensorflow tensorflow blob r1 3 tensorflow examples learn wide n deep tutorial py https githu
  • XML - 将属性反序列化为 Xml 子树

    当我反序列化 xml 字符串时 我需要在名为prop2 My XML