<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 件のコメント :
コメントを投稿