<name><![CDATA[pinzolo]]></name>こんな XML を出力したい場合、通常ならばこう書けばいい。
var nameElement= new XElement("name", new XCData(obj.Name));でも、obj.Name が null の場合、ArgumentNullException が発生する。
そこで、文字列が存在する場合のみ CDATA セクションを追加するようにしたい。
最初はこう書いた。
var nameElement = new XElement("name"); if (obj.Name != null) { nameElement.SetValue(new XCData(obj.Name)); }しかし、XObject を値にすることはできないという ArgumentException が発生した。
とりあえず次はこうしてみた。
var nameElement = new XElement("name"); if (obj.Name != null) { nameElement.SetValue(new XCData(obj.Name).ToString()); }こうなった。まあ、当たり前だ。
<name><![CDATA[pinzolo]]></name>他にも正解はあるだろうが、とりあえず正解の一つはこれのようだ。
var nameElement = new XElement("name"); if (obj.Name != null) { nameElement.ReplaceNodes(new XCData(obj.Name)); }なるほど、置き換えてやるのね。
0 件のコメント :
コメントを投稿