Xml序列化-当没有数据时不包含元素

时间:2019-06-24 03:15:19

标签: c# xml xml-serialization

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

<ElementA />

如果该字段没有数据,是否有可能根本不写出该元素?

谢谢

2 个答案:

答案 0 :(得分:0)

可能的重复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类,该类不会省略空元素。

答案 1 :(得分:0)

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

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