2017-05-25 2 views
3

ich einfache HTML zu laden versuchen:HtmlAgilityPack loadhtml - Problem mit leeren P-Tags

var html = "<div>something<p></p></div>"; 

var doc = new HtmlDocument(); 
doc.LoadHtml(html); 

Nach diesem HTML Laden doc.InnerHtml gibt dieses:

<div>something<p></div> 

So wie Sie es verliert das Schließen P sehen Tag und ich habe HTML verwirrt.

Ich kann keine Lösung dafür finden, kann mir bitte helfen.

+3

Sie 'doc.OptionWriteEmptyNodes = true' verwenden' '

something

haim770

+3

ich eine Betrogene bekommen markiert, aber nach mehr Forschung, ich habe wieder geöffnet, weil das kein Fehler ist. Es ist eine Funktion (ja, wirklich), und die Ausgabe ist nicht "durcheinander". In diesem speziellen Fall ist das schließende Tag optional. Denken Sie daran, HTML ist kein XML. [*** "Das Start-Tag ist erforderlich. Das End-Tag kann weggelassen werden (.......), wenn im Elternelement kein Inhalt mehr vorhanden ist und das Elternelement kein -Element ist." *** ] (https://developer.mozilla.org/en/docs/Web/HTML/Element/p) Der von Ihnen gepostete HTML-Code erfüllt diese Anforderungen. – spender

+0

@ haim770 Danke, das löst mein Problem. Wenn du es als Antwort schreiben willst, kann ich es akzeptieren. – carpics

Antwort

1

Die OptionWriteEmptyNodes Flagge ist das, was Sie suchen:

Legt fest, ob leere Knoten müssen geschrieben werden, wie bei der Ausgabe geschlossen.

Und in Ihrem Fall:

doc.OptionWriteEmptyNodes = true; 

Ausbeuten:

<div>something<p /></div>