Ich habe etwas HTML, das durch <br/>
getrennt ist <br/>
:
Jack Janson
<br/>
309 123 456
<br/>
My Special Street 43
Was ist der einfachste Weg, um die Informationen in 3 Spalten zu erhalten?
Ich bin kein XPath-Experte, also wäre ein anderer Ansatz, die Zeichenfolge beim Zeilenumbruch zu trennen und einfach mit dem Array zu arbeiten. Gibt es einen klügeren Weg?
Update: Vergessen, den Code zu formatieren.
In reinem XPATH über XML würden Sie einen XPATH-Ausdruck wie //following-sibling::br
: //preceding-sibling::br
oder //following-sibling::br
(siehe hier für Hilfe zu XPATH-Achsen )
Aber die XPATH-über-HTML-Implementierung, die Sie in Html Agility Pack finden, unterstützt keinen reinen Textknoten oder (Attributknoten) in XPATH-Auswahlausdrücken ( //br/text()
oder //br/@blah
funktionieren nicht für Beispiel). Beachte, dass es in Filtern funktioniert, also funktionieren //br[text()='blah']
oder //br[@att='blah']
.
Also, zurück zu der Frage, müssen Sie XPATH und Code, etwas wie folgt kombinieren:
HtmlDocument doc = new HtmlDocument();
doc.Load(myHtmlFile);
foreach (HtmlNode p in doc.DocumentNode.SelectNodes("//br"))
{
Console.WriteLine(p.PreviousSibling.InnerText.Trim());
}
Das wird ausgegeben
Jack Janson
309 123 456