Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-12-2011, 15:43   #1 (permalink)
Eierkopf
 
Benutzerbild von themerx
 
Registriert seit: Jul 2008
Ort: Hagen
Beiträge: 207
XML Tag anhand einer ID löschen

Hallo zusammen,

verurteilt mich nicht aber ich finde einfach keine anständige Lösung.
Ich möchte mir eine Funktion schreiben, die doppelte XML Tags raus löscht. Jedes Tag hat eine eindeutige ID. Kommt diese ID doppelt vor soll eines der beiden gelöscht werden.

Beispiel:
HTML-Code:
<!-- VORHER -->
<data>
  <point id="0" x="20" y="40" />
  <point id="1" x="30" y="50" />
  <point id="0" x="20" y="40" />
  <point id="1" x="30" y="50" />
  <point id="2" x="25" y="70" />
  <point id="1" x="30" y="50" />
</data>


<!-- NACHHER -->
<data>
  <point id="0" x="20" y="40" />
  <point id="1" x="30" y="50" />
  <point id="2" x="25" y="70" />
</data>
Meine Funktion ist soweit, dass sie erkennt, welche Tags doppelt sind. Ich weiß aber absolut nicht, wie ich es löschen kann.

PHP-Code:
private function cleanXML():void 
        
{
            
// Vektor der vorhandene IDs aufnehmen soll
            
var idList:Vector.<String> = new Vector.<String>();
            
            
// Schleife für alle Knoten
            
for each (var tempData:XML in data.children()) 
            {
                
// Temporäre ID
                
var tempID:String tempData.@ID;
                
                
// ist die ID schonmal aufgezeichnet worden?
                
var tempResult:int tempID.indexOf(tempID);
                
                if (
res == -1// Nein! Zeichne sie auf
                    
keyList.push(key);
                else 
// JA! Eintrag ist doppelt. Lösche mich!
                
{
                    
// ???
                
}
            }
        } 
__________________
http://www.purecube.de

Geändert von themerx (27-12-2011 um 15:44 Uhr)
themerx ist offline   Mit Zitat antworten
Alt 27-12-2011, 17:30   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
z.b.
anstatt zu löschen, erstelle ein neues XML nur mit den gewünschten einträgen.
und sollte eine ID (identifikationsnummer) nicht von hause aus eindeutig sein? also erst garnicht rein lassen - kannst du dann zumindestens mit diesem neuen XML anwenden: also nicht frage obs etwas schon gibt, sondern obs etwas noch nicht gibt.

XMLs kennen bewusst keine reihenfolge, was ein sortieren knifflig macht ;-) deshalb vielleicht in ein array umwandeln und:
http://www.seibsprogrammladen.de/fra...orithmen/Array Doppelte Einträge entfernen + Mehrfach vorhandene Einträge listen (ist AS2 und prototype sind auch aus der mode, kann ja nicht ständig alles neu schreiben. die idee dahinter ist aber immer anwendbar)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (27-12-2011 um 17:43 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 29-12-2011, 11:19   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 44
hi, probier mal

PHP-Code:
function cleanXML():void {
    for 
each (var node:XML in data.children()) {
        if (
data.*.(@id == node.@id).length() > 1delete data.*[node.childIndex()];
    }


Geändert von _malte (29-12-2011 um 11:34 Uhr)
_malte ist offline   Mit Zitat antworten
Alt 29-12-2011, 13:45   #4 (permalink)
Eierkopf
 
Benutzerbild von themerx
 
Registriert seit: Jul 2008
Ort: Hagen
Beiträge: 207
Hi nochmal,
zunächst einmal Danke für die Antworten.

@hgseib:
Kann ich nichts mit anfangen. Ist viel zu umständlich und uneffizient. Zumal ich auch ehrlich gesagt keine Lust hatte mich durch die Codes durchzuarbeiten (nicht böse gemeint).

@_malte
Danke, so ähnlich hab ich es auch gelöst bekommen. Denke, dass meine Lösung vom Prizip ähnlich/gleich ist.

MFG
__________________
http://www.purecube.de
themerx ist offline   Mit Zitat antworten
Alt 29-12-2011, 19:40   #5 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.868
mal ne ganz dumme Frage: wieso enthält die XML-Date denn doppelte Einträge?
Sollte das nicht schon beim erzeugen der XML-Daten vermieden/bereinigt werden?
Und wenn zwei Einträge die selbe ID haben, sind dann auch die restlichen Werte/Attribute gleich? Und wenn nicht, wie entscheidest du, welchen Eintrag du behältst?


Sorge dafür, dass beim erzeugen der XML-Datei keine doppelten IDs entstehen. Dann musst du auch nicht bei jedem laden der Datei erst die Daten bereinigen.
Vorschläge wie du das umsetzen kannst, kann ich dir erst machen, wenn ich weiss, die die XML-Datei entsteht.
__________________
greetz Thomas

plz RTFM & Coding Conventions
thomas_E 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Buttons (MovieCl) anhand einer XML Datei erzeugen akimos ActionScript 3 20 13-02-2008 10:55
Viele Dateien anhand einer TXT Datei umbenennen WeedFlasher Am Rande 6 17-10-2005 19:45
Anhand einer Funktion eine Kurve zeichnen? Samuel Flash MX 8 04-04-2005 18:19
Löschen einer Datei an einer Bestimmten Uhrzeit [SaD]Dryp PHP und MySQL 4 26-09-2003 19:13
flash ani anhand einer xml datei mengegenge Flash 4 und Flash 5 0 20-07-2003 20:00


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:46 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele