使用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 )