| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| poke Registriert seit: Dec 2002 Ort: Iserlohn [NRW]
Beiträge: 2.304
| XML: html innerhalb nodeValue
Hi! hab ne kurze Frage zu XML.. Also, ich lade ganz normal und ohne Probleme XML Daten in Flash rein. Klappt auch alles super und ohne Probleme. Allerdings: ich hab z.B. so einen Knoten Code: <knoten attribut="wert">Blabla</knoten> ActionScript:
Jetzt möchte ich aber z.B. so einen Wert in den Knoten schreiben: Code: <knoten attribut="wert"><b>fetter text</b> normaler text</knoten> Wenn ich einfach nur .firstChild benutze, bekomme ich nur den Text bis zum schlißenden b-Tag heraus. Wie kann ich den kompletten Wert innerhalb des Knoten auslesen? also mit untergeordneten Tags? (CDATA hilft leider auch nicht, er gibt die > alt > etc. zurück..) |
| | |
| | #2 (permalink) |
| . Registriert seit: May 2003 Ort: bayern
Beiträge: 1.117
|
das kannste einfach umgehen indem du ganz auf nodeValue verzichtest und ausschließlich mit attributen arbeitest, z.B.: ActionScript:
deinText.txt ==> txt=<b>fetter text</b> normaler text in deinem text kannt du dann tags drin haben wie du lustig bist...
__________________ [mooseMash] |
| | |
| | #3 (permalink) |
| Definitionssache Registriert seit: Apr 2003 Ort: Braunschweig
Beiträge: 2.433
|
oder so sollte es auch gehen: anstatt: ActionScript:
das: ActionScript:
oder: ActionScript:
schau mal unter Escape Characters: http://www.w3schools.com/xml/xml_cdata.asp
__________________ .................................................. ........................... Jetzt kostenlos runterladen! KALENDER 2007 mit folgenden Angaben: Jahr, Monat, Tag, Wochentag, Kalenderwoche, Feiertag, Wochenende (Sa. / So.), Schulferien, Bundesland. http://www.ocean-internet.de Software Entwicklung: PHP, MySQL, Perl, Flash, Visual Basic .Net, C#, ... Lösungen. |
| | |
| | #5 (permalink) |
| TheMask Registriert seit: Jan 2002
Beiträge: 196
|
ich hab das bei mir so gelösst: HTML-Code: <knoten attribut="wert" doFormat="true">[b]fetter text[/b] normaler text</knoten> also mit: ActionScript:
gibt bestimmt nen besseren weg aber der funktioniert auf jeden fall...
__________________ grz jason |
| | |
| | #6 (permalink) |
| poke Registriert seit: Dec 2002 Ort: Iserlohn [NRW]
Beiträge: 2.304
|
ok ^^ fangen wir oben an... @mooseMash: ja, das wär natürlich ne möglichkeit, aber wenn ich nen längeren text habe, der zudem noch über mehrere Zeilen geht (der knoten heißt in diesem Fall "description"), dann ist das nicht sehr schön gelöst ![]() @dburucu: mit CDATA hab ichs auch probiert, aber da werden dann die tags im textfeld selbst ignoriert. ich werd mir deinen link aber mal ansehen ![]() @bryan.fury: jo, das hab ich auch gesehen. notfalls leg ich da ein "blind" tag drum.. @jason_mask: hehe, so ala bbcode.. aber das ist auch ne notfall lösung.. //edit: hey, dburucu, ich hab das mit dem CDATA nochmal ausprobiert.. irgendwie geht das ja doch!? ^^ gestern gings nicht.. naja. danke! Problem gelöst |
| | |
| | #7 (permalink) |
| . Registriert seit: May 2003 Ort: bayern
Beiträge: 1.117
|
hi pokepika, kann dir nicht ganz folgen, insbesondere bei längerem text macht es sinn diesen auszulagern, schon allein um die lesbarkeit der xml-datei zu wahren...
__________________ [mooseMash] |
| | |
| | #8 (permalink) |
| poke Registriert seit: Dec 2002 Ort: Iserlohn [NRW]
Beiträge: 2.304
|
du hast doch gesagt, dass ich alles als attribut benutzen soll.. aber z.B. bei sowas: Code: <tag attr="dies ist ein langer Text. Als Attribut sieht das nicht gerade übersichtlich aus, wenn man ihn hier rein schreibt. Besonders, wenn er über mehrere Zeilen geht." /> Code: <tag>Dies ist auch ein langer Text. Innerhalb des Tags ist das viel übersichtlicher, auch bei mehreren Zeilen erkennt man noch, dass es zum tag gehört, wobei man beim Attribut nicht umbedingt das ende erkennt</tag> |
| | |
| | #9 (permalink) |
| . Registriert seit: May 2003 Ort: bayern
Beiträge: 1.117
|
sorry, ich hatte mich wohl nicht klar ausgedrückt. ActionScript:
ist ein verweis auf die datei in der dein text steht. Die textdatei 'deinText.txt' kann so lang sein wie sie lustig ist. Sie kann auch tags enthalten wie sie mag. mittels new LoadVar() schreibst du dir dann eine funktion die den text lädt und ihn da hinbringt wodu ihn haben willst, das attribut wird also nie länger als dein dateiname. klarer?
__________________ [mooseMash] |
| | |
| | #11 (permalink) |
| subfiler Registriert seit: Jul 2004
Beiträge: 175
|
schön das es bei XML bedingung ist, das "<" und ">" nur in tags benutzt werden können und nicht als attributen werte. somit wird das spiel extrem einfach. angenommen c ist das knoten tag als flash XML node, dann geht das mit 3 zeilen code: Code: sText = c.toString();
sText = sText.substr(sText.indexOf(">")+1,sText.length);
sText = sText.substr(0,sText.lastIndexOf("<")); Code: htmlClean = function(t){
t = t.split("\n").join(" ");
t = t.split("\r").join(" ");
t = t.split("\t").join(" ");
t = t.split("\xA0").join(" ");
t = t.split(" ").join(" ");
t = t.split(" ").join(" ");
t = t.split(" ").join(" ");
if (t.charAt(0)==" ") t = t.substr(1,t.length-1);
if (t.charAt(t.length-1)==" ") t = t.substr(0,t.length-1);
return t;
} |
| | |
| | #12 (permalink) |
| subfiler Registriert seit: Jul 2004
Beiträge: 175
|
die htmlClean funktion ist leider nicht perfekt. falls nun leerzeichen nach einem <br /> kommen, dann stehen die halt am anfang der zeile. eine kleine modifikation die dieses problem behebt: PHP-Code: Geändert von th. (15-05-2005 um 12:30 Uhr) |
| | |
| | #13 (permalink) |
| TheMask Registriert seit: Jan 2002
Beiträge: 196
| \n und \r
nur als keiner hinweiss: windows macht aus einem zeilenumbruch die kombination \n\r die htmlClean function ersetzt aber sowohl \n alsauch \r durch ein leerzeichen. weshalb also aus einem zeilen umbruch 2 leerzeichne würden... übrigens heisst \n new line und \r carriage return (also wagenrücklauf) also wär es richtiger das \r wegzuschmeissen und das \n zu behalten... auch weil linux und ich glaub auch mac nur \n benutzen... ich weiss das es nicht die sauberste lösung ist den prototype vom string zu verändern aber das hält den code so schön übersichtlich... ![]() Edit: die htmlClean funktion: wenns zuviele leerzeichen sind bleiben noch nen paar stehn deshalb sollte in ner whileschleife geprüft werden ob noch welche stehngeblieben sind... have fun modifying... ActionScript:
__________________ grz jason Geändert von jason_mask (15-05-2005 um 12:54 Uhr) |
| | |
| | #15 (permalink) |
| subfiler Registriert seit: Jul 2004
Beiträge: 175
| zur erklärung: das ersetzen von \r und \n durch leerzeichen geschieht deswegen, weil beides im html (genauso wie tab und shift-space) unbedeutende zeichen sind (ausser bei <pre>, aber das ist mir egal). deswegen werden \r \n \t und \xA0 durch leerzeichen ersetzt, die dann wieder zusammengefasst werden, weil doppelte leerzeichen sich nicht doppelt auswirken (nur bei flash halt, aber das ist ja der bug). es stimmt, das hier nicht wirklich geprüft wird, ob noch doppelte leerzeichen vorkommen oder nicht, das ist ein manko der routine. in der 2. version der routine wird die darstellung von <br /> durch \r reduziert, weil es für flash das gleiche ist. dadurch ergibt sich die möglichkeit auf leerzeichen am zeilenanfang zu prüfen, die unter normalen umständen keine auswirkungen hätten. da hier flash aber wieder diese zeichen darstellt, werden sie entfernt. \r und \n falls flash \n und \r nicht gleich behandeln sollte, ist natürlich die frage ob \n oder \r benutzt wird. weis jemand, ob der flashplayer hier auf den unterschiedlichen plattformen einen unterschied macht? generell gilt: win: \n\r mac:\r *nix:\n |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |