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

时间:2015-02-04 02:22:21

标签: c# xml linq replace linq-to-xml

我有一些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>

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

1 个答案:

答案 0 :(得分:1)

如果我正确地提出了您的问题,您希望将所有子节点复制到具有不同名称的新父节点。如果是这样,请使用Nodes()方法。

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