首页 > 后端开发 > C++ > 如何防止 .NET XML 序列化中出现空值?

如何防止 .NET XML 序列化中出现空值?

Barbara Streisand
发布: 2025-01-12 06:13:47
原创
817 人浏览过

How Can I Prevent Null Values from Appearing in .NET XML Serialization?

在 .NET XML 序列化期间消除空值

.NET XmlSerializer 的默认行为在序列化 XML 输出中包含空值。 这通常是不受欢迎的。 我们来看看如何防止这种情况发生。 考虑从示例类生成的以下 XML:

<code class="language-xml"><?xml version="1.0" encoding="utf-8"?><myclass><mynullableint p2:nil="true" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance"></mynullableint><myotherint>-1</myotherint></myclass></code>
登录后复制

请注意,mynullableint(设置为 null 的可空整数)仍然存在于 XML 中。 解决方案在于使用 ShouldSerialize 模式。

要排除 null MyNullableInt 属性,请在类中实现此方法:

<code class="language-csharp">public bool ShouldSerializeMyNullableInt()
{
  return MyNullableInt.HasValue;
}</code>
登录后复制

此方法有条件地控制序列化。 仅当 true 包含值时才返回 MyNullableInt,确保其包含在 XML 中。 否则,它返回 false,有效地抑制该元素。

这是一个完整的示例:

<code class="language-csharp">public class Person
{
  public string Name { get; set; }
  public int? Age { get; set; }
  public bool ShouldSerializeAge()
  {
    return Age.HasValue;
  }
}</code>
登录后复制

使用此 ShouldSerializeAge 方法,以下代码将生成不带 Age 元素的 XML,因为它为 null:

<code class="language-csharp">Person thePerson = new Person() { Name = "Chris" };
XmlSerializer xs = new XmlSerializer(typeof(Person));
StringWriter sw = new StringWriter();
xs.Serialize(sw, thePerson);</code>
登录后复制

生成的 XML:

<code class="language-xml"><person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><name>Chris</name></person></code>
登录后复制

以上是如何防止 .NET XML 序列化中出现空值?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板