Reputation: 383
I have the following XML file:
<?xml version="1.0" encoding="utf-8"?>
<html>
<body>
<p><span class="screenitems">Add</span></p>
</body>
</html>
I Want it to delete <span>
node but the Add
to exist, so it looks as follows at the end:
<?xml version="1.0" encoding="utf-8"?>
<html>
<body>
<p>Add</p>
</body>
</html>
Is there a good/simple way to do this?
Upvotes: 2
Views: 92
Reputation: 156
Remark: Your XML looks like HTML-Code. HTML is not always a valid XML (see the BR-Tag: <br>
). That might cause exceptions - so you either should be very sure that your HTML is a valid XML (then you can use XDocument
) or you should use Regex.Replace()
Regex spanRegex = new Regex(@"<span[^>]*>([\s\S]*?)</span[^>]*>");
spanRegex.Replace(input, match => { return match.Groups[1].ToString(); });
(see http://regexr.com/3cjuq)
Upvotes: 1
Reputation: 167716
Use ReplaceWith
, e.g.
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());
}
Upvotes: 4