我无法隐藏没有数据的 XElements。
如果我有这个代码:
string missing = string.Empty;
XElement missingNodes = new XElement("TOPLEVEL",
new XElement("FIELD1", "VALUE1"),
new XElement("FIELD2", missing),
new XElement("FIELD3", "VALUE3")
);
我最终构建了这个架构:
<TOPLEVEL>
<FIELD1>VALUE1</FIELD1>
<FIELD2></FIELD2>
<FIELD3>VALUE3</FIELD3>
</TOPLEVEL>
如果我将缺失更改为 null 而不是 String.Empty,则第二个字段将变为:
<FIELD2 />
有没有一种简单的方法来隐藏具有空/空数据的节点?
我希望它看起来更像这样:
<TOPLEVEL>
<FIELD1>VALUE1</FIELD1>
<FIELD3>VALUE3</FIELD3>
</TOPLEVEL>
编辑:
按照@sine 和@gunr2171 的建议,我走上了不添加空/空节点的道路。
由于我想将所有内容保持在嵌套的新格式中(没有很多 if/then 分支),我尝试使用三条件检查 null。有趣的是,如果您将 null 作为任何内容的内容传递,XElement 不会留下任何工件。
所以这成功了:
string missing = null;
XElement missingNodes = new XElement("TOPLEVEL",
new XElement("FIELD1", "VALUE1"),
(missing != null ) ? new XElement("FIELD2", missing) : null,
new XElement("FIELD3", "VALUE3")
);