Ich versuche, span-, font-, b-, s-, strike-Tags (und andere innere Elemente) aus HTML-Inhalten zu entfernen, während Text und Tags in diesem erhalten <br>
. Zu diesem Zweck verwende ich HTML Agility Pack. Ich habe es geschafft, Text zu <br>
aber <br>
Tags sind immer noch ein Problem. Irgendwelche Ideen?
Hier ist der Code:
private void removeTagsButPreserveText2(HtmlNode nodeToRemove)
{
var parent = nodeToRemove.ParentNode;
var prev = nodeToRemove.PreviousSibling;
if (prev != null)
{
var child = nodeToRemove.SelectNodes("./br");
if (child == null)
{
parent.InsertAfter(documentToSearch.CreateTextNode(nodeToRemove.InnerText + " "), prev);
nodeToRemove.Remove();
}
else
{
foreach (var item in child)
{
var parent2 = item.PreviousSibling;
if (parent2 != null)
{
if (parent2.InnerText.HasDate())
{
var newNode = parent.InsertAfter(documentToSearch.CreateTextNode(parent2.InnerText), prev);
parent.InsertAfter(documentToSearch.CreateElement("br"), newNode);
nodeToRemove.Remove();
}
}
}
}
}
}
Zum Beispiel wird die Eingabe sein:
<p><font face="Arial" size="2"><strike>
<span style="font-weight: 400"><font color="#000000">Paper
Submission (Full
Paper) Before
<span lang="en-us">September</span> 20, 201<span lang="en-us">2</span></font></span></strike><font color="#FF0000"><br>
Notification of
Acceptance On <span lang="en-us">October 5</span>, 201<span lang="en-us">2</span><br>
Authors'
Registration Before
<span lang="en-us">October 20</span>, 201<span lang="en-us">2</span><br>
ICNIT 2012 Conference
Dates November
17 - 18, 2012</font></font></p>
und die Ausgabe sollte so aussehen:
<p>Paper Submission (Full Paper) Before September 20, 2012<br>
Notification of Acceptance On October 5, 2012<br>
Authors' Registration Before October 20, 2012<br>
ICNIT 2012 Conference
Dates November
17 - 18, 2012</p>
Für diese Art der HTML-Manipulation gibt es eine großartige Bibliothek namens HTML Agility Pack .
Hier ist eine ähnliche Frage, die in die richtige Richtung zeigt: Html Agility Pack - Element entfernen, aber nicht innerHtml