XElement ReplaceAll函数的问题
本文关键字:问题 函数 ReplaceAll XElement | 更新日期: 2023-09-27 17:50:43
我使用XElement的ReplaceAll
函数。我有以下图像元素,我必须替换:
<image x="773.35399" y="1175.40315" .... />
当我用以下元素替换上面的元素时:
<image x="23" y="11" .../>
在调用ReplaceAll函数之后创建一个额外的元素,被替换的元素被包装在其中。表示上述替换结果将为:
<image>
<image x="23" y="11" .../>
</image>
我不想在一个额外的元素中包装被替换的元素。
用ReplaceWith
方法代替ReplaceAll
方法。后者替换子节点和元素的属性,而不是替换元素本身。
XDocument xdoc = XDocument.Load(path_to_xml);
xdoc.Root.Element("image")
.ReplaceWith(new XElement("image",
new XAttribute("x", 23),
new XAttribute("y", 11)));
xdoc.Save(path_to_xml);
最有可能的是你在"image"节点上调用ReplaceAll -它将用新内容替换它的所有子节点。在您的示例中,"replace子节点"(调用之前没有)将简单地添加新的"image"节点作为子节点,正如您所看到的。
您可能需要XElement。ReplaceWith。