Benutzer mit den meisten Antworten
Mit RegEx HTML-Datei analysieren

Frage
-
Hallo
Ich habe eine HTML-Datei aus welcher div. Infos extrahiert werden müssen.
Grundstruktur ist eine Tabelle. Wenn ich mit <TR\s*[^>]*?>(?<ROW>.*?)<\/TR> Die einzelnen Zeilen bekommen möchte, geht das nur, solange in den TD-Tags nicht auch wieder eine Tabelle steht.
Wie muss ich das umstellen, damit ein ROW eine Untertabelle zu stehen kommt? Ich weis, dass es dann nicht noch mehrere Untertabellen haben kann.
Gruss Christoph
Antworten
-
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 30. März 2010 07:33
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Sonntag, 1. Februar 2015 14:57
Alle Antworten
-
Hallo Christoph,
Kannst Du die HTML Datei und den Code denn Du hast hier posten?
Schau Dir mal den folgenden Diskussionsfaden an. Vielleicht kann er Dir weiter helfen.
http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/5c88f68c-c396-4d7c-bf31-47ceebe2dbbe/ - Hier findest Du zum Beispiel folgender Code:
string input = @"<html>...<table> <tr><td>a</td><td>b</td></tr> <tr><td>c</td><td>d</td></tr> </table> </html>"; HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); doc.LoadHtml(input); HtmlNode table = doc.DocumentNode.SelectSingleNode("//table"); string mystring = table.InnerText; //"\r\n ab\r\n cd\r\n " HtmlNode row2 = table.SelectSingleNode("tr[2]"); HtmlNode row2col1 = row2.SelectSingleNode("td[1]"); row2col1.InnerHtml = "hello"; Console.WriteLine(doc.DocumentNode.OuterHtml);
Danke und Grüße,
Robert
- Bearbeitet Robert BreitenhoferModerator Dienstag, 30. März 2010 07:32 Hyperlink eingetragen
-
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Dienstag, 30. März 2010 07:33
- Als Antwort markiert Tom Lambert (Koopakiller)Moderator Sonntag, 1. Februar 2015 14:57
-
Hallo
Die Tabelle würde etwa so aussehen:
<table> <tr> <td>a</td> <td> <table> <tr> <td>b</td> <td>c</td> </tr> </table> </td> </tr> <tr> <td>d</td> <td>e</td> </tr> </table>
Ich habe es bis mir RegEx gemacht und bei diesem Probleme komme ich nicht weiter.
In der 2. Spalte muss nicht immer eine Tabelle stehen, es kann auch nur ein Wert stehen.
Ich werde das mit dem htmlDocument mal prüfen. Ich habe da eben noch keine vollständige HTML-Seite sondern nur Ausschnitte und muss über die Kommentare die zu bearbeitenden Tabellen bestimmen.
Habe gerade gesehen, dass mit RegEx evt. Back Reference helfen könnte.
Gruss Christoph
-
Hallo Elmar
HAP sieht sehr interessant aus. Da ich bis jetzt mit XPath nur ganz wenig gemacht habe, muss ich mich da noch einarbeiten.
Falls du HAP selber schon eingesetzt hast,kannst du mir aber vieleicht bei einem Problem helfen.
Ich nutze eine HTML-Seite um einen Bereich der Seite anders aufzubereiten(fürs iPhone) und möchte dann am Schluss diesen Bereich durch den neuen Bereich ersetzen.
Der neue Bereich ist eine Table nach einem Form-Element.
So möchte ich das ersetzen, was aber zu einem Fehler führt;
oMainHtmlRootNode.ReplaceChild(oNewMailHtmlNode, oMainHtmlRootNode.SelectSingleNode("//form//following-sibling::table"))
Node "...." was not found in the collection ....
oNewMailHtmlNode habe ich manuell zusammengesetzt
Eine Idee?
Gruss Christoph