我有两个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
。
我可以想到在null
中区分string.Empty
和XElement
的大量黑客攻击,但是框架中是否有内置的内容可以解决这个问题?
答案 0 :(得分:4)
el1.IsEmpty
将返回true,另一方面,el2.IsEmpty
将返回false。
答案 1 :(得分:2)
2.6.2 xsi:nil
XML Schema:Structures引入了一种机制,用于表明应该接受一个元素 尽管内容类型不需要或甚至不允许空内容,但它没有内容时有效。如果元素具有值为true的属性xsi:nil,则元素可以是有效的而没有内容。如此标记的元素必须为空,但如果相应的复杂类型允许,则可以携带属性。
所以对你来说,你必须将xsi名称空间添加到你的XmlDocument中。然后元素看起来像
<xel xsi:nil="true" />