Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-12-2004, 10:32   #1 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
XML und htmlText Content + Sonderzeichen

Hi,

ich habe da ein sehr großes Problem mit XML… sonst hab ich ja immer PHP benutzt und loadVars()…

Also… XML Datei laden und verarbeiten kein Problem…

Aber die Datei wird nich eingelesen wenn der Inhalt eines NodeAttributes:

1.) HTML Tags für htmlText Content enthält
2.) "", '' usw. enthält
3.) linebreaks, die die textarea zur Eingabe im CMS gemacht hat… letzeres könnte man ja einfach mit n2lbr() nach HTML schicken…


Aber wie kriege ich nun mein XML File dazu, diese Dinge abzuspeichern?!?

Code:
<?xml version="1.0" encoding="UTF-8"?>
<id>
    <data date="1764" description="Eintrag Überschrift" link="http://www.google.de" content="Das ist ein Text." />
    <data date="1999" description="HTML<br /> Tags wollen einfach <b>nicht</b>" link="http://www.google.de" content="Das ist ein Text." />
    <data date="1998" description="schlimm sind auch "Anführungszeichen"" link="http://www.google.de" content="Das ist ein Text." />
</id>

Yves
  Mit Zitat antworten
Alt 23-12-2004, 14:15   #2 (permalink)
Nord-Workoholic
 
Benutzerbild von TinKim
 
Registriert seit: Mar 2004
Ort: Kiel
Beiträge: 937
Kein Wunder, indem Du Anführungszeichen (") in Attribut-Werte schreibst, machst Du das Attribut ja dicht oder auf ohne ein neues Attribut zu starten oder zu schließen. Dadurch machst Du Deine XML-Datei kaputt bzw. fehlerhaft, und dann zeigt Dir Flash die kalte Schulter.

Versuchs mal so:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<id>
    <data date="1764" description="Eintrag berschrift" link="http://www.google.de" content="Das ist ein Text." />
    <data date="1999" description="&lt;br /&gt;&lt;b&gt;HTML&lt;/b&gt;" link="http://www.google.de" content="Das ist ein Text." />
    <data date="1998" description="schlimm sind auch &quot;Anfhrungszeichen&quot;" link="http://www.google.de" content="Das ist ein Text." />
</id>
...und schmeiß die Datei einfach mal auf einen Browser, dann bekommst Du Deine Ergebnisse.

Edit: Wenn Du das dann in Flash in einem HTML-Text-Feld verwenden möchtest oder so, müsste das klappen.

Geändert von TinKim (23-12-2004 um 14:17 Uhr)
TinKim ist offline   Mit Zitat antworten
Alt 23-12-2004, 14:30   #3 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
ich würde nicht unbedingt ausschließlich mit attributen arbeiten.
wenn du cdata nutzt, wird es sicher leichter sein, das alles zu handeln.

grz
warrantmaster ist offline   Mit Zitat antworten
Alt 23-12-2004, 14:38   #4 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
cdata?
  Mit Zitat antworten
Alt 23-12-2004, 14:41   #5 (permalink)
_//\\#//\\_
 
Benutzerbild von warrantmaster
 
Registriert seit: Jan 2003
Beiträge: 7.060
http://www.flashforum.de/forum/searc...earchid=354185
warrantmaster ist offline   Mit Zitat antworten
Alt 23-12-2004, 18:18   #6 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi,

ich hab dann mal rawurlencode(nl2br($a['content'])) verwenden


Yves
  Mit Zitat antworten
Alt 23-12-2004, 18:26   #7 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi zusammen…

zu früh gefreut.


Die XML ist zwar nach dem rawurlencode und dem nl2br schön komplett und heile…aber das HTML Textfeld in Flash bricht beim ersten % Zeichen ab…

Viele Grüße

Yves
  Mit Zitat antworten
Alt 23-12-2004, 18:48   #8 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Ich habe mich jetzt dazu entschlossen, das ganze doch mit rawurlencode zu machen.

Nun muss ich nur das htmlTextfeld dazu kriegen, die Hexcodes zu interpretieren! Weiss jemand etwas dazu?

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 23-12-2004, 18:51   #9 (permalink)
"Lust auf Stil"
 
Benutzerbild von questionner
 
Registriert seit: Jun 2003
Ort: Florenz
Beiträge: 1.490
Was ist denn, wenn Du nach der Def. des xml-Elements in Flash noch so etwas wie:
ActionScript:
  1. Text = "";
setzt.
Und dann z.B. nach dem child:
ActionScript:
  1. Text += "<br><font size=\"+2\"color=\"#666666\">"+DeinXMLElement1+"</font><br>";
  2. Text += "<was-auch-immer-für-ein-html-tag>"+DeinXMLElement2+"</was-auch-immer-für-ein-html-tag>";
Mal so als Idee bzgl. XML, nicht rawurlencodes.
__________________
Dann geht ein Bild hinein, geht durch der Glieder angespannter Stille - und hört im Herzen auf zu sein.
questionner ist offline   Mit Zitat antworten
Alt 23-12-2004, 19:34   #10 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hmm,

das ist ein netter Ansatz, aber zu aufwendig und zuviel Workaround…
Der Kunde kann in einem CMS via kleiner Schaltfläche die HTML Tags <b>,<i>,<u>und <a href> <br>(einfach return… nl2br + replace von <br /> nach <br> klappt) einfügen. Diese werden dann in die XML Datei geschrieben… und damit diese dann dadurch nicht kaputt geht, hab ich das nun als rawurlencoded.

Mich wundert einfach nur, warum der HExcode nicht gewandelt wird im Textfeld.

txt.htmlText="S%26J"; zb funktioniert nicht.

Texte wie "http%3A%2F%2Fwww.google.de" content="%3Cb%3Ebold%3C%2Fb%3E%3Cbr%3E%0D%0A%3Cu%3 Eunderline%3C%2Fu%3E%3Cbr%3E%0D%0A%3Ci%3Eitalic%3C %2Fi%3E%3Cbr%3E%0D%0A%3Ca%20href%3D%22www.google.% 22%3Ehyperlink%3C%2Fa%3E%3Cbr%3E%0D%0A%3Cbr%3E%0D% 0A%3Cbr%3E%0D%0A%3Cbr%3E%0D%0A%3Cbr%3E%0D%0A%3Cbr% 3E%0D%0A" sollen dann später interepretiert werden… also im Prinzip nur die Zeichen <,>,",/ müssten escaped werden… ich habe schon überlegt, ob ich mir nicht selbst Werte mit zb * ausdenke und dann konvertiere für die XML und in Flash wieder ersetze…

Schau mal die Fla anbei… warum geht in dem simplen Feld nicht der Hexcode???


Yves
Angehängte Dateien
Dateityp: zip Untitled-1.fla.zip (3,5 KB, 3x aufgerufen)
  Mit Zitat antworten
Alt 23-12-2004, 19:54   #11 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hmm…

also… mit Split & Join in Flash kann's auch nix werden… ich kann doch unmöglich den gesamten Hexcode encodierten String in Flash zurückwandeln… Flash kann doch hexcode Nur bei mir nicht.

Yves
  Mit Zitat antworten
Alt 23-12-2004, 20:20   #12 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Ich habe etwas herausgefunden!

Wenn ich mittels loadVars Text einlese, dann klappt das wunderbar mit dem Hexcode.

Denselben string via XML… und schon wird der Hexcode nicht mehr interpretiert.

Anbei die Fla's zum Beweis.

Was nun?
Angehängte Dateien
Dateityp: zip xml.zip (8,7 KB, 8x aufgerufen)
  Mit Zitat antworten
Alt 23-12-2004, 22:35   #13 (permalink)
"Lust auf Stil"
 
Benutzerbild von questionner
 
Registriert seit: Jun 2003
Ort: Florenz
Beiträge: 1.490
Hi coffeemaker,

warum setzt Du in den Beispielen denn nicht die Html-Tags direkt in die txt? Dort werden sie doch normalerweise korrekt erkannt. Die Dinger kann doch jeder in Wordpad oder so erstellen. Dann braucht es keine Schaltflächen und CMS. Dazu einfach ein PHP-File-Upload.
Und Deine XML, machst Du die immer so? Wo ist denn der Rest:
PHP-Code:
<xmlversion="1.0"//sollte doch so beginnen, unten hast Du es auch so
<...../> //dann der Inhalt der XML 
Es gibt doch auch noch XML-Funktionen in PHP. Könntest doch auch hier theoretisch eine xml-Datei via Eingabemaske und php-script erstellen und auf den Server setzen bzw. umschreiben.

Was hast Du dennn genau vor? Sollen die Texte online oder offline erstelt werden? Besser txt oder xml? Eine txt sollte für Ungeübte die einfachere Variante sein.

Oder versuchst Du in Flash einen Text per Art bbcode mittels AS umzuwandeln und diesen per php abzulegen?

Wenn doch xml-Daten angelegt werden sollen, hat warrant doch recht:
xml wie gewohnt deklarieren, dann xmld.parseXML, dann CDATA und mit nodeValue das Erzeugen neuer Knoten vermeiden. Müsste auch mit den php-Funktionen für XML klappen.

Was ist denn nu Dein genaues Ziel bzw. was soll der Kunde tun? Mein Favorit für ungeübte immer noch die txt mit den Variablen und den einfachen Html-Tags.
Bin jetzt offline, frohe Weihnachten, Family-Time.
__________________
Dann geht ein Bild hinein, geht durch der Glieder angespannter Stille - und hört im Herzen auf zu sein.
questionner ist offline   Mit Zitat antworten
Alt 23-12-2004, 22:53   #14 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Hi Questioner. Die HTML Tags setze ich doch „einfach“ in den „Text“.

Mal von vorne…

Es gibt eine Präsentationscdrom, deren Content auch im Web bereitsteht.
Ich habe ein CMS gecodet, wo man nun Inhalte via Formluar in eine MySQL Dbase einpflegen kann. Wenn man den Text formatieren möchte, kann man einfach direkt in das Formularfeld in den Text HTML Tags einbinden oder eben eine kleine Javascript Funktion nutzen, die ähnlich wie das von dir erwähnte BB-Code Tool funktioniert.
Soweit also alles klar. Ich kann mittels CMS wunderbar HTML formatierten Text in eine Dbase einpflegen.

Online nutze ich dann loadVars und die &= Variablenseparatormethode, welche in der PHP Datei, die online die Inhalte abfragt, zum Einsatz kommt.
Hier klappt alles wunderbar.


Nun zur Offlineversion… diese kann man mittels CMS ebenfalls direkt downloaden. Dabei wir das aktive Verzeichnis ausgelesen, indem sich die Inhalte befinden. Die PHP Dateien werden ignorierst, stattdessen erzeugt das Script eine XML Datei aus dem Daten aus der Dbase und fügt diese dem „Archiv“ hinzu.
Dieses Archiv kann man dann auf die CD brennen und hat alles beisammen.

Mein Problem:
Zuerst habe ich die HTML Tags usw. einfach in die Attributwertestrings der Nodes geschrieben. Das führte dazu das die XML kaputt ging.
Logisch.
Also habe ich dann alle non-alphanumerischen Zeichen mit rawurlencode() nach Hexcode codiert. Das ist soweit auch alles prima.

Jetzt ist die XML Datei in Ordnung. Nur wenn ich diese dann mittels xml.load() in Flash einlese und auf dynamische Textfelder verteile, dann werden die Hexcodes nicht gewandelt.

Warum? Mit loadVars und Variablenseparatormethode geht es doch auch!
Was macht das XML-Objekt in Flash anders, das der hexencodierte Content daraus aufeinmal nicht mehr interpretiert und als „nackter“ String verwendet wird.

Es geht hier weniger darum, welche Methode die richtige ist.
Ich hab schon öfter mal Menüs usw. mit XML usw. erledigt, das ging auch immer wunderbar. So neu ist das alles nicht für mich.
Jedoch habe ich noch nie Massentext usw. in XML Files für Flash abgespeichert und stoße nun auf das Problem mit den HTML Tags, was ich ja durch rawurlencode() gelöst habe. Nur will Flash da nicht mitspielen.


Die Lösung wäre nun, aus dem CMS keine XML Dateien erstellen zu lassen, sondern eben numerierte Variablenseparatoren in einer Textdatei. Da geht das alles wie ich möchte.

Dennoch interessiert mich das o.g. Problem, denn XML ist hier auch viel einfach auszulesen als eine txt Datei und daher die bessere Wahl.

Liebe Grüße

Yves
  Mit Zitat antworten
Alt 23-12-2004, 22:57   #15 (permalink)
409coffeemaker
Gast
 
Beiträge: n/a
Zitat:
Zitat von questionner
xml wie gewohnt deklarieren, dann xmld.parseXML, dann CDATA und mit nodeValue das Erzeugen neuer Knoten vermeiden.
http://www.w3schools.com/xml/xml_cdata.asp

Das klingt gut. Ich werde das mal versuchen. Dann kann ich ja praktisch das encodieren nach Hexcode ersparen.


Yves
  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 14:07 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele