我当前正在使用XmlSerializer类将某些数据写到XML文档中,但是当特定字段不包含数据时,它当前正在将其写出,如下所示:
<ElementA />
如果该字段没有数据,是否有可能根本不写出该元素?
谢谢
答案 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;