子元素和值存在时的 XElement 替换

XElement Replacement when Child Elements and Value Exist

我有一些 Xml 正在尝试更改 XElement 的名称。 XElement 包含子元素和类似于此的值

<parent>
  Hi I am a value <a href="link">link</a>
</parent>

我尝试使用建议的方法 here,但我只能复制元素或值。先设置元素再设置值会清除元素。

<newparent>
  Hi I am a value link
</newparent>

先复制值再复制元素文本

<newparent>
  Hi I am a value link <a href="link">link</a>
</newparent>

值本身的字符串操作会转义所有括号。

<newparent>
  Hi I am a value link &lt;a href="link"&gt;link&lt;/a&gt;
</newparent>

有人知道如何将值和元素正确复制到新创建的元素吗?

如果我没听错你的问题,你希望将所有子节点复制到具有不同名称的新父节点。如果是这样,请使用 Nodes() 方法。

XElement parent = XElement.Parse("<parent>Hi I am a value <a href=\"link\">link</a></parent>");
var newparent = new XElement("newparent", parent.Nodes());