Yeahman
OC Addicted
|
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!
|
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
|
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
|
wenns VB (bzw asp) oder auch php sein kann - wo genau ist dann das problem?
|
Yeahman
OC Addicted
|
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
Legendundead
|
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
|
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 ![;)](/images/smilies/wink.gif) 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
Legendundead
|
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...
|
Yeahman
OC Addicted
|
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:](/images/smilies/rolleyes.gif) 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
Legendundead
|
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
|
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
Legendundead
|
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: ##-- 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:](/images/smilies/rolleyes.gif) 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
|
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:](/images/smilies/rolleyes.gif) 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
Legendundead
|
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!
|
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.
|