使用C#.NET中的XDocument库删除内部节点,但不删除xml中的值

我有以下XML文件:

   

Add

我希望它删除节点但Add到存在,所以它在最后看起来如下:

    

Add

有一个好/简单的方法来做到这一点?

使用ReplaceWith ,例如

 XDocument doc = XDocument.Load("file.xml"); XElement span = doc.Descendants("p").First().Elements("span").FirstOrDefault(s => (string)s.Attribute("class") == "screenitems"); if (span != null) { span.ReplaceWith(span.Nodes()); } 

备注:您的XML看起来像HTML-Code。 HTML并不总是有效的XML(请参阅BR-Tag:
)。 这可能会导致exception – 因此您应该非常确定您的HTML是有效的XML(然后您可以使用XDocument ),或者您应该使用Regex.Replace()

 Regex spanRegex = new Regex(@"]*>([\s\S]*?)]*>"); spanRegex.Replace(input, match => { return match.Groups[1].ToString(); }); 

(见http://regexr.com/3cjuq )