【发布时间】:2013-02-04 16:25:47
【问题描述】:
我有一个简单的 XML 文档,如下所示:
<Person>
<LastName>LastName1</LastName>
<FirstName>FirstName1</FirstName>
<MiddleName>MiddleName1</MiddleName>
<Suffix>Suffix1</Suffix>
</Person>
但是我有一个限制,我 不允许 添加空标签。因此,如果Suffix 值不存在,我将无法使用<Suffix />,否则验证将失败。
我正在使用来自不同类的XElement 对象组成XML 结构,这些对象通过.ToXML() 方法返回的XElement 对象返回各自的XML。我需要检查 每个元素 以查看返回的 XElement 是否为 null。如果是这样的话,它必须就像那条线从未存在过。我正在尝试使用 ?? 运算符,但出现 ??左操作数永远不会为空。我的代码如下:
public XElement ToXML()
{
return new XElement("Employee",
new XElement(this.LastName.ToXML()) ?? null,
new XElement(this.FirstName.ToXML()) ?? null,
new XElement(this.MiddleName.ToXML()) ?? null,
new XElement(this.Suffix.ToXML()) ?? null);
}
如何检查每个 XML 节点以查看返回的 XElement 对象是否为空,如果是,则忽略一起添加/组合该节点?任何帮助表示赞赏,谢谢!
【问题讨论】:
-
ToXML()方法的返回类型是什么?如果是XElement,为什么要围绕它创建一个新的XElement? -
不,你是对的,当方法已经返回
XElement实例时,我不应该使用new。我不应该把它放在示例中,但我会把它留给未来的读者。
标签: c# xml linq-to-xml xelement