"We are back" « oc.at

[erledigt] HTML mit JS Parsen

Yeahman 18.02.2003 - 10:36 1345 18
Posts

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
Hat jemand ne Idee wie man aus JS heraus ein HTML-File parsen kann?
In dem File ist ein Table drinnen der mich interessiert. Ich hätt mir sowas gedacht, wie mit dem FSO das File öffnen, alles vor und nach dem Table wegzuhauen, und dann das Ding als XML zu laden.

Hat jemand ne bessere Idee?
Bearbeitet von Yeahman am 18.02.2003, 18:46

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
wenn wir mal die bugs der browserhersteller in der vergangenheit ausser acht lassen, hast du mit JS keine möglichkeit eine datei zu öffen und deren inhalt zu lesen.
das einzige das mir einfällt, wäre, wenn js und html vom selben server in ein frameset oder iframe geladen werden, dann sollte es möglich sein, das das script auf das DOM des HTML zugreifen kann.

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
die HTMLDateien rennen auf keinem Server und nix, es muss auch nicht JS sein kann auch VB oder was auch immer sein.

Im Endeffekt will ich den Inhalt von der Table von der einen Seite, mit dem Inhalt der Table auf der 2. Seite vergleichen.

Guest

Deleted User
Registered: n/a
Location:
Posts: n/a
wenns VB (bzw asp) oder auch php sein kann - wo genau ist dann das problem? :confused:

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
ASP kanns nicht sein, weils nur 2 Files sind nicht mehr, kein IIS, etc.

Was ich wissen wollte ist, obs ne bessere Variante gibt, als das HTML als XML zu laden, da das HTML nicht unbedingt XHTML konform kein muss, <br> innerhalb von td etc.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Yeahman
ASP kanns nicht sein, weils nur 2 Files sind nicht mehr, kein IIS, etc.

Was ich wissen wollte ist, obs ne bessere Variante gibt, als das HTML als XML zu laden, da das HTML nicht unbedingt XHTML konform kein muss, <br> innerhalb von td etc.
wenn du nur den inhalt zweier tabellen vergleichen willst gibts tatsächlich ne bessere variante: nämlich alles in eine variable, dabei komplett die html-tags strippen, und du kannst schon mit dem vergleich beginnen ;)

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
Zitat von watchout
wenn du nur den inhalt zweier tabellen vergleichen willst gibts tatsächlich ne bessere variante: nämlich alles in eine variable, dabei komplett die html-tags strippen, und du kannst schon mit dem vergleich beginnen ;)

na so war das nicht gemeint, ich muss schauen, ob gewisse Zelleninhalte von der einen Tabelle in der anderen vorkommen, und wenn ja ein paar Daten, zurück auf eine 1. Tabelle schreiben.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Yeahman
na so war das nicht gemeint, ich muss schauen, ob gewisse Zelleninhalte von der einen Tabelle in der anderen vorkommen, und wenn ja ein paar Daten, zurück auf eine 1. Tabelle schreiben.
wenn du die zelleninhalte in ein (zweidimensionales) array schreibst solltest du schön vergleichen können, und wenn dir nix anderes einfällt kannst du damit die tabelle rekonstruieren - wenn zellen mit spans vorkommen musst du dir was überlegen... :rolleyes:

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
Zitat von watchout
wenn du die zelleninhalte in ein (zweidimensionales) array schreibst solltest du schön vergleichen können, und wenn dir nix anderes einfällt kannst du damit die tabelle rekonstruieren - wenn zellen mit spans vorkommen musst du dir was überlegen... :rolleyes:

nochmal:
meine Frage bezieht sich darauf wie man am intelligentesten an die Inhalte in den Tables rankommt, wie ich dann vergleiche usw. ist mir schon klar.

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Yeahman
nochmal:
meine Frage bezieht sich darauf wie man am intelligentesten an die Inhalte in den Tables rankommt, wie ich dann vergleiche usw. ist mir schon klar.
das is ja nicht dein ernst oder? was viel schöneres als eine tabelle kann dir eh kaum passieren...
ab exklusive "<table .....>" beginnst vor "</table>" hörst auf dann gehst mir zwei verschachtelten schleifen die "<tr>" und "<td>" tags durch, was is das problem dabei?

edit: dann sag was du wissen möchtest und red nicht ne stund drum herum - der threadtitel hat übrigens exact "0" mit dem problem zu tun

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
ok vergiss es, wennst das nicht verstehen willst.

1. ich red ne ne Stunde rum, ich denke ich habs im vorigen Posting schon erklärt, ich will auf die Zelleninhalte kommen, ohne den Parser selber zu schreiben
2. der Threadtitle ist richtig, wennst blos das 1. Posting lesen würdest
3. Wennst mir nicht helfen willst, das sag wenigstens gar nix

Sorry, aber ich reagiere ein bischen allergisch auf solche herablassenden Kommentare. (vorallem seitdem der Umgangston in dem Forum immer mehr gegen 0 geht)
Bearbeitet von Yeahman am 18.02.2003, 16:01

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Yeahman
ok vergiss es, wennst das nicht verstehen willst.

1. ich red ne ne Stunde rum, ich denke ich habs im vorigen Posting schon erklärt, ich will auf die Zelleninhalte kommen, ohne den Parser selber zu schreiben
2. der Threadtitle ist richtig, wennst blos das 1. Posting lesen würdest
3. Wennst mir nicht helfen willst, das sag wenigstens gar nix

Sorry, aber ich reagiere ein bischen allergisch auf solche herablassenden Kommentare. (vorallem seitdem der Umgangston in dem Forum immer mehr gegen 0 geht)
1. und wie willst du auf die zelleninhalte kommen ohne einen "parser"...
2. du willst nicht html parsen sondern nur den inhalt von zellen auslesen - html parsen würde bedeuten du willst einen browser schreiben (und das mit js - interessant)
3. ich will dir doch helfen, aber du widersprichst dich von post zu post...


und ich hab jetzt tatsächlich eine lösung gefunden - funkt sogar in js - aber nur mit microsoft!

grundlage:
frameset, midestens 2 frames, das jscript muss entweder mit verzögerung oder von einem 3. frame aus gestartet werden
die zwei anderen frames enthalten die html-files mit den tabellen, und so in etwa sollte das ausschauen:


Code:
##-- html-file 1 --##
<table>
 <tr>
  <td>a</td>
  <td>b</td>
 </tr>
 <tr>
  <td>c</td>
  <td>d</td>
 </tr>
</table>

##-- html-file 2 --##
<table>
 <tr>
  <td>b</td>
  <td>a</td>
 </tr>
 <tr>
  <td>c</td>
  <td>d</td>
 </tr>
</table>

##-- Script --##
function vergleich ()
{
 var int_i = 0;
 var str_taga = "";
 var str_tagb = "";
 while (window.frame1.document.all.tags("td")[int_i])
 {
  if (window.frame2.document.all.tags("td")[int_i])
   {
     str_taga = window.frame1.document.all.tags("td")[int_i].innerText;
     str_tagb = window.frame2.document.all.tags("td")[int_i].innerText;
     // mach irgendwas vergleichen tun... :P
   }
  int_i++;
 }
}

// ab ie5 und ns6x geht auch folgender code:
// window.frame1.document.getElementsByTagName("td")[int_i].firstChild.nodeValue
der code is weder getestet noch irgendwas, aber ich schätze _damit_ kannst mal was anfangen

ps: wennst das nächste mal wieder hochfährst überleg mal das andere leute oft fürs coden geld bekommen, du kriegst hier nen code gratis, plus gratis support - der oft auch noch 24h erreichbar ist :rolleyes:
auch wenns ein simples stück dreckiger code is, geh zu nem progger und frag ihn ob er dir da weiterhelfen kann - der sagt nur "mein stundensatz is xx euro - los gehts"

Yeahman

OC Addicted
Avatar
Registered: Jul 2001
Location: on top of my sol..
Posts: 1775
Zitat von watchout
ps: wennst das nächste mal wieder hochfährst überleg mal das andere leute oft fürs coden geld bekommen, du kriegst hier nen code gratis, plus gratis support - der oft auch noch 24h erreichbar ist :rolleyes:
auch wenns ein simples stück dreckiger code is, geh zu nem progger und frag ihn ob er dir da weiterhelfen kann - der sagt nur "mein stundensatz is xx euro - los gehts"

1. Bin ich Programmierer
2. Wollte ich nie Code sondern nur einen Lösungsansatz, steht aber im 1. Post

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von Yeahman
1. Bin ich Programmierer
2. Wollte ich nie Code sondern nur einen Lösungsansatz, steht aber im 1. Post
auch ein lösungsansatz kostet zeit und damit geld, und du, da du ja programmierer bist wie du sagst solltest das wohl am besten wissen "."

sag einfach ob dir das weiter hilft ok?

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
wenn man keinen ext. html parser findet, ist die lösung mit dem Browser-DOM (wie ich sie oben schon erwähnt habe und watchout implementiert hat) möglich, wenn auch nicht die schönste. will man watchouts code cross-browser kompatibel machen, sollte das mit der W3C-DOM funktion getElementsByTag() nicht alzu schwer sein.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz