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”。

在这种情况下,您最终会得到“myvalue”+newline+“myvalue2”,这似乎是.net 中的默认实现,我认为如果您也只有一个孩子,它会使用这个换行符。

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

valueEl 没有任何子元素,因此 valueEl.Value 只是一个字符串。

为什么要使用 dataEl.SetElementValue("value", dataEl.Value) ?是否要设置父“数据”节点的所有连接文本?

于 2013-02-08T08:50:56.493 回答