Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 02-04-2005, 21:21   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 14
Such-Algorithmus für mehrere XML-Dateien

Hi,
das Szenario ist folgendes: Ich möchte eine Suchabfrage auf bestimmte Strings in XML-Dokumenten starten. Der Algorithmus für ein XML-Dokument funktioniert und liefert gute Ergebnisse. Jetzt möchte ich zusätzlich, dass in dem Falle, dass die Suche in einer XML Datei nicht erfolgreich war, in die nächste XML Datei in dem gleichen Ordner gesucht werden soll. Mich interessiert nur, wie ich Flash klar mache, dass er zu der nächsten Datei springen soll. Das Ziel ist zu sagen: Gehe in Unterordner1, checke xml dateien, parse die erste, suche, falls nicht erfolgreich gehe in die nächste file, parse etc.
Ist so etwas generell möglich? Hat jemand Ideen?
Danke.

cemento
cemento ist offline   Mit Zitat antworten
Alt 03-04-2005, 09:38   #2 (permalink)
 
Registriert seit: Dec 2003
Beiträge: 202
flash selber kann keine ordner nach inhalten abfragen. du müsstest ein php script am server haben, welches dir die filenamen, die in einem ordner sind, rückgibt. dann kannst du mit flash die einzelnen files reinsaugen und durchsuchen.
bryan.fury ist offline   Mit Zitat antworten
Alt 03-04-2005, 11:21   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 14
Cooler Tip. Danke.
Könnte dann wie folgt aussehen:

<?php
$path ="blablaba.....Pfad des einzulesenden Ordners";
$folder = dir($path);
echo "Inhalt des Verzeichnisses ", $path, "<br>";
while($datei = $folder->read()) {
echo"\n$datei<br>";
}
$folder->close();
?
>

Frage: Soll ich die Daten dann lieber in eine Textfile speichern, oder kommt Flash auch mit einer Übergabe von PHP klar? Wie könnte ich die denn mit AS abfangen?

cemento
cemento ist offline   Mit Zitat antworten
Alt 03-04-2005, 13:27   #4 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
du kannst an flash einen per semikolon geteilten string per echo übergeben.

rueckgabe=datei1;datei2 usw
die variable splittest du per variable.split(";")

und nun kannste mit dem array alle xml dateien im verzeichnis durchgehen.
noch nen tipp der mir spontan dazu einfällt.
ich weiß nicht was du suchen willst, aber falls möglich kannste doch die xml datei laden-noch nicht parsen sondern per indexOf im onData eventhandler schauen ob überhaupt etwas ähnliches in der xml vorhanden ist.

wenn ja dann parste die xml datei und schaust nochmal genauer hin.
(beim überschreiben des onData handlers ist das manuelle parsen pflicht, da der originale onData die daten automatisch parsen würde->nachdem du ihn überschreibst tut sich ohne dein zutun nichts)

spart bei größeren xml dateien sicherlich rechenzeit.


gruß
deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 03-04-2005, 16:23   #5 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 14
Mit der Semikolon getrennten Übergabe erscheint mir logisch.
Was meinst du mit der "indexOf" Geschichte genau? Suchen möchte ich nach bestimmten "nodeValues". Da muss ich doch erst einmal parsen, oder nicht?

gruß
cemento
cemento ist offline   Mit Zitat antworten
Alt 03-04-2005, 16:50   #6 (permalink)
Neuer User
 
Registriert seit: Jun 2001
Ort: Stuttgart
Beiträge: 6.415
Also angenommen deine XML Datei sieht so aus:
"<?xml version='1.0' encoding="utf-8"?><element1>hallo</element1>"

Lädst du diese über die Methode "xml.load()" in flash rein, kommt dort natürlich nichts fertiges an. Das Parsen fehlt noch.
Dies übernimmt in Flash die standardmäßige implementierung von onData.
sie parsed und ruft den onLoad event auf-ist alles richtig geladen wird ihr true übergeben bei fehlern ein false (kenntste sicher die abfrage(if(erstesArgumentVononLoad){alles ok})

Den onData event kann man allerdings überschreiben.
So fängt man die Rohdaten(ungeparseder String) ab
(String: "<?xml version='1.0' encoding="utf-8"?><element1>hallo</element1>")

Strings kennen die methode string.indexOf(zeichenkette), die bei vorhanden sein der zeichekette die startposition zurückgibt oder bei nicht-vorhanden sein eine "-1"

warum also nicht schon die Rohdaten testen ob das zu suchende Element vorhanden sein kann?
PHP-Code:
//so wirds 0815 gemacht
o=new xml()
o.onLoad=function(){...}

//Rohdaten abfangen

o=new XML()
//standardmäßige implementierung wird überschrieben
//also onLoad, parseXML und loaded=true
//manuell ausführen
o.onData=function(raw){
//in raw befinden sich die rohdaten
if(raw.indexOf("stringZumVorabTesten")!=-1){
//irgendetwas ähnliches ist vorhanden
//also parsen und onLoad aufrufen
this.parseXML(raw)
this.onLoad(true)
}else{
//onLoad bescheid geben das daten ankamen, aber keine interessanten
this.onLoad(false)
}
}
o.onLoad=function(suc){
if(
suc){
//interessante daten
//suche in geparseder xml fortsetzen
}else{
//laden fehlgeschlagen od. uninteressante daten
//suche mit nächste xml fortsetzen
}
}
o.load("eine.xml"
mal nen grobüberblick wie ich das gemeint habe

deluxe
Deluxe ist offline   Mit Zitat antworten
Alt 03-04-2005, 18:56   #7 (permalink)
Neuer User
 
Registriert seit: Nov 2003
Beiträge: 14
Danke deluxe, ist auf jeden Fall eine saubere Lösung. Ich werde es testen.

cemento
cemento ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele