0

resx ファイルの値タグの内容を置き換えるコードがあります。値要素をフェッチしてそのコンテンツを変更すると、すべてが期待どおりに機能します。

foreach (XElement dataEl in doc.Root.Descendants("data"))
{
    XElement valueEl = dataEl.Element("value");
    valueEl.Value = valueEl.Value;
    Console.WriteLine(dataEl);
}

結果:

...
<value>myvalue</value>
...

ただし、値を次のように設定します。

dataEl.SetElementValue("value", dataEl.Value);

結果:

...
<value>
myvalue
</value>
...

なぜSetElementValueこれらの新しい行を追加するのですか?

4

1 に答える 1

1

MSDN の XElement.Value: この要素の連結されたテキスト コンテンツを取得または設定します。

したがって、dataEl.Value は、「データ」ノード内で見つかったすべてのテキストを返します。この場合、「value」子ノードのみが存在するため、そのテキストが返されますが、理論的には、「value2」のように他の子ノードを内部に持つことができます。

その場合、.net のデフォルトの実装と思われる "myvalue" +newline+ "myvalue2" になります。また、子が 1 つしかない場合は、この改行を使用すると思います。

一方で: XElement valueEl = dataEl.Element("value");

valueEl には子要素がないため、valueEl.Value は単なる文字列です。

そして、なぜ dataEl.SetElementValue("value", dataEl.Value) を使用するのでしょうか? 親「データ」ノードのすべての連結テキストを設定しますか?

于 2013-02-08T08:50:56.493 に答える