7

XElementのインスタンスが2つあります。

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、これを行うためのフレームワークに組み込まれているもので、欠けているものはありますか?

4

2 に答える 2

5

el1.IsEmpty一方、trueを el2.IsEmpty返し、falseを返します。

于 2012-11-14T16:37:20.313 に答える
2

XMLスキーマ標準から:

2.6.2 xsi:nil

XMLスキーマ:Structuresは、空のコンテンツを必要としない、または必ずしも許可しないコンテンツタイプにもかかわらず、コンテンツがない場合に要素を「有効」として受け入れる必要があることを通知するメカニズムを導入します。要素の属性がxsi:nilで、値がtrueの場合、要素はコンテンツなしで「有効」である可能性があります。そのようにラベル付けされた要素は空である必要がありますが、対応する複合型で許可されている場合は属性を保持できます。

したがって、XmlDocumentにxsi名前空間を追加する必要があります。その場合、要素は次のようになります

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