7

我有两个 XElement 实例:

var el1 = new System.Xml.Linq.XElement("xel", null);
var el2 = new System.Xml.Linq.XElement("xel", string.Empty);

el1看起来像这样:

<xel />

el2看起来像这样:

<xel></xel>

然而,两者的Value性质等于string.Empty

我可以想出很多技巧来区别于nullstring.Empty但是XElement框架中是否有一些内置的东西可以做到这一点,我错过了?

4

2 回答 2

5

el1.IsEmpty将返回 true,另一方面, el2.IsEmpty将返回 false。

于 2012-11-14T16:37:20.313 回答
2

XML 模式标准

2.6.2 xsi:nil

XML Schema:Structures 引入了一种机制,用于发出信号,当一个元素没有内容时,它应该被接受为·有效·,尽管内容类型不需要甚至不一定允许空内容。如果一个元素的属性xsi:nil 的值为true,它可能是没有内容的有效的。如此标记的元素必须为空,但如果相应的复杂类型允许,则可以携带属性。

因此,对您而言,您必须将 xsi 命名空间添加到您的 XmlDocument 中。然后元素看起来像

<xel xsi:nil="true" />
于 2012-11-14T16:40:05.180 回答