Problem mit xml.appendChild [Flash 10]
| 22.10.2009, 20:24 | | Beiträge: 924 Registriert: Jul 2008
| Problem mit xml.appendChild Hallo,
habe folgendes XML-Objekt:
ActionScript:1 2 3 4 5 6 | <projekte>
<ds id="0" ProjektID="2" Projektname="Projekt A"/>
<ds id="1" ProjektID="4" Projektname="Projekt B"/>
<ds id="2" ProjektID="6" Projektname="Projekt C"/>
<ds id="3" ProjektID="7" Projektname="Projekt D"/>
</projekte>
|
Wenn ich jetzt mit
ActionScript:| 1 | xml.appendChild("<ds id=\"" + xml.ds.length() + "\" ProjektID=\"" + projektid + "\" Projektname=\"" + projektname + "\" />");
|
einen Datensatz hinzufügen möchte, sieht das hinterher so aus:
ActionScript:1 2 3 4 5 6 7 | <projekte>
<ds id="0" ProjektID="2" Projektname="Projekt A"/>
<ds id="1" ProjektID="4" Projektname="Projekt B"/>
<ds id="2" ProjektID="6" Projektname="Projekt C"/>
<ds id="3" ProjektID="7" Projektname="Projekt D"/>
<ds><ds id="4" ProjektID="8" Projektname="Projekt E"/></ds>
</projekte>
|
Wie kann man den neuen Datensatz entsprechend dem Aufbau des XML-Objektes hinzufügen? Alternative wäre, das komplette XML-Objekt in einen String zu konvertieren, dann den neuen Datensatz als String anhängen und anschließend wieder zurück zu XML konvertieren. Fänd ich nur vorsichtig ausgedrückt unschön.
KerstinWer Rechtschreibfehler findet, darf sie gerne behalten. | |
| 23.10.2009, 10:48 | Re1 | Beiträge: 182 Registriert: Jun 2009
| das ist seltsam...
wenn ich deine ersten beiden code-schnipsel verwende, bekomme ich eine richtige trace-ausgabe. ohne diesen zusätzlichen tag. | |
| 23.10.2009, 11:12 | Re2 | Beiträge: 924 Registriert: Jul 2008
Themenautor/in
| Hm... ernsthaft?
Ich erhalte das XML-Objekt definitv so wie es oben steht. Also mit den zusätzlichen Tags. Zwischenzeitlich habe ich zwar meinen Alternativweg umgesetzt, aber mit appendChild fände ich es natürlich wesentlich besser:
ActionScript:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // Datensatz in eigene_xml eintragen
var stringindex:int = eigene_xml.toXMLString().search("</eigene_projekte>");
var xmlstring:String;
// eigene Projekte vorhanden?
if (stringindex != -1) {
var insertstring:String = "<ds id=\"" + eigene_xml.ds.length() + "\" ProjektID=\"" + andere_xml.ds[index].@ProjektID + "\" Projektname=\"" + andere_xml.ds[index].@Projektname + "\" />";
xmlstring = eigene_xml.toXMLString().substr(0, stringindex);
xmlstring += insertstring;
xmlstring += "</eigene_projekte>";
eigene_xml = new XML(xmlstring);
} else {
xmlstring = "<?xml version=\"1.0\"?><eigene_projekte>";
xmlstring += "<ds id=\"0\" ProjektID=\"" + andere_xml.ds[index].@ProjektID + "\" Projektname=\"" + andere_xml.ds[index].@Projektname + "\" />";
xmlstring += "</eigene_projekte>";
eigene_xml = new XML(xmlstring);
}
|
Kerstin
EDIT: oder muß ich die Sonderzeichen (eckigen Klammern) irgendwie escapen/kennzeichnen? Hab grad einfach ne neue Datei erstellt und den Code mit appendChild nochmals getestet, Ausgabe:
ActionScript:1 2 3 4 5 6 7 | <projekte>
<ds id="0" ProjektID="2" Projektname="Projekt A"/>
<ds id="1" ProjektID="4" Projektname="Projekt B"/>
<ds id="2" ProjektID="6" Projektname="Projekt C"/>
<ds id="3" ProjektID="7" Projektname="Projekt D"/>
<ds><ds id="4" ProjektID="10" Projektname="Projekt E" /></ds>
</projekte>
|
Wer Rechtschreibfehler findet, darf sie gerne behalten. | Geändert von Kerstin77 am 23.10.09 um 11:38 Uhr
| |
|
| | | nicht sichtbar bei eingeloggten Mitgliedern |
|
| 26.10.2009, 23:05 | Re3 | Beiträge: 6940 Wohnort: München Registriert: Jan 2002
| Kannst Du mal das genau Test-Script inkl Daten posten?
Ich habe es gerade mal mit Flex versucht und das hat ebenfalls funktioniert.
ActionScript:1 2 3 4 5 6 7 8 9 10 | var x:XML = <projekte>
<ds id="0" ProjektID="2" Projektname="Projekt A"/>
<ds id="1" ProjektID="4" Projektname="Projekt B"/>
<ds id="2" ProjektID="6" Projektname="Projekt C"/>
<ds id="3" ProjektID="7" Projektname="Projekt D"/>
</projekte>;
x.appendChild("<ds id=\"" + x.ds.length() + "\" ProjektID=\"s\" Projektname=\"name\" />");
trace(x)
|
Ausgabe:
<projekte>
<ds id="0" ProjektID="2" Projektname="Projekt A"/>
<ds id="1" ProjektID="4" Projektname="Projekt B"/>
<ds id="2" ProjektID="6" Projektname="Projekt C"/>
<ds id="3" ProjektID="7" Projektname="Projekt D"/>
<ds id="4" ProjektID="s" Projektname="name"/>
</projekte>Flex Freelancer || Flashhilfe @ Twitter || XING Profil | |
| 26.10.2009, 23:21 | Re4 | Beiträge: 924 Registriert: Jul 2008
Themenautor/in
| Hallo Sebastian,
hab grad herausgefunden, daß es am Flashplayer 10 liegt. Exportiere ich für Flashplayer 9, läuft das appendChild problemlos.
Datei im Anhang.
Grüße,
KerstinWer Rechtschreibfehler findet, darf sie gerne behalten.
Angehängte Dateien:
| |
| 26.10.2009, 23:28 | Re5 | Beiträge: 6940 Wohnort: München Registriert: Jan 2002
| Hm, komisch.
Mit Flex kompilier ich ja auch für den 10 Player und rufe es auch mit diesem auf. Habe die fla mal als HTML veröffentlicht und im Browser aufgerufen. - also das selbe Plugin und auch da funktioniert es nicht.
Scheint also ein Kompiler Problem zu sein.Flex Freelancer || Flashhilfe @ Twitter || XING Profil | |
| | | nicht sichtbar bei eingeloggten Mitgliedern | 
|
| | Themen Ähnliche Beiträge zum Thema | 25.09.2010 - yeah666 10.10.2010 - Timo.s 15.07.2009 - juerkan 03.06.2010 - magier |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|