【问题标题】:Xml Serialization - Don't include element when no data presentXml 序列化 - 不存在数据时不包含元素
【发布时间】:2019-06-24 03:15:19
【问题描述】:

我目前正在使用 XmlSerializer 类将某些数据写入 XML 文档,但是当特定字段不包含数据时,它当前正在将其写入如下:

<ElementA />

如果该字段不存在数据,是否可以完全不写出该元素?

谢谢

【问题讨论】:

    标签: c# xml xml-serialization


    【解决方案1】:

    看看ShouldSerilize 方法。 在您的课程中,您只需要实现bool ShouldSerilizeElementA() 方法,例如:

     public bool ShouldSerilizeElementA() => ElementA != null;
    

    【讨论】:

      【解决方案2】:

      可能重复How do I tell xmlwriter to ignore empty nodes in C#?

      关于这种方法的详细描述是here

      短:使用正则表达式从结果字符串中删除空元素。

      static Regex regex = new Regex(@"\<[\w-_.: ]*\>\<\!\[CDATA\[\]\]\>\</[\w-_.: ]*\>|\<[\w-_.: ]*\>\</[\w-_.: ]*\>|<[\w-_.: ]*/\>|\<[\w-_.: ]*[/]+\>|\<[\w-_.: ]*[\s]xmlns[:\w]*=""[\w-/_.: ]*""\>\</[\w-_.: ]*\>|<[\w-_.: ]*[\s]xmlns[:\w]*=""[\w-/_.: ]*""[\s]*/\>|\<[\w-_.: ]*[\s]xmlns[:\w]*=""[\w-/_.: ]*""\>\<\!\[CDATA\[\]\]\>\</[\w-_.: ]*\>",RegexOptions.Compiled);
      

      这里用这种方式写自定义的XMLWriter/XMLReader类,不会省略空元素。

      【讨论】:

        猜你喜欢
        • 2011-09-01
        • 2021-02-19
        • 1970-01-01
        • 1970-01-01
        • 2011-06-24
        • 1970-01-01
        • 2015-09-04
        相关资源
        最近更新 更多