HTMLAgilityPack und Trennen auf

html-agility-pack

Frage

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.

Akzeptierte Antwort

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



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum