1&1 DSL
Flashhilfe.de - Flash Community

Problem mit xml.appendChild [Flash 10]

Forum > ActionScript 3.0 > Problem mit xml.appendChild

 


AntwortenRegistrieren Seite1  

 22.10.2009, 20:24 
Benutzerbild von Kerstin77
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:
1xml.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.

Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
 23.10.2009, 10:48Re1
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:12Re2
Benutzerbild von Kerstin77
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>&lt;ds id="4" ProjektID="10" Projektname="Projekt E" /&gt;</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:05Re3
Benutzerbild von SebastianFlashhilfe.de Moderator
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:21Re4
Benutzerbild von Kerstin77
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,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.

Angehängte Dateien:
Adobe Flash Quelldatei xml.fla45.00 KB
 26.10.2009, 23:28Re5
Benutzerbild von SebastianFlashhilfe.de Moderator
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 Mitgliedern1&1 Webhosting
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de