Avatar billede olf Nybegynder
28. januar 2003 - 10:23 Der er 19 kommentarer og
1 løsning

XML-tekst og mellemrum

Når jeg importerer tekst i Flash vha XML, har jeg det problem at når jeg skriver teksten fra XML'en på skærmen, kan første karakter i en linie (ikke den første linie, men en af de efterfølgende) godt kan være et mellemrum.

Det kan fx se således ud:

Her er min test
tekst med et
mellemrum i lin.
2.

Jeg har sat "ignoreWhite" på min XML (som nu heller ikke burde have noget med dette problem at gøre).

Tekstfeltet er af typen HTML.

/OLF
Avatar billede olf Nybegynder
28. januar 2003 - 10:24 #1
Tja, og jeg skal allerede beklage - men det var desværre ikke muligt at vise hvordan teksten ser ud - mit mellemrum i linie to blev slettet af eksperten!
Avatar billede barklund Nybegynder
28. januar 2003 - 10:29 #2
Hvad står der i den "rå" xml-fil? Har du et link?

Og hvordan parser du det? Kan du ikke give actionscriptet...
Avatar billede hoejrup Nybegynder
28. januar 2003 - 10:49 #3
Du kan fjerne whitespace med metode beskrevet på http://www.moock.org/asdg/codedepot/ under punktet strip xml whitespace.

/per
Avatar billede hoejrup Nybegynder
28. januar 2003 - 10:50 #4
Hvis brugere anvender en player efter version 5.0.41, så kan du i stedet for anvende xml.removeWhitespace().

/per
Avatar billede olf Nybegynder
28. januar 2003 - 17:47 #5
barklund: Desværre har jeg ikke mulighed for at henvise til et link - det er et projekt der endnu ikke må vises på nettet :-(

Jeg henter xml'en sådan her:
XML.prototype.ignoreWhite = true;
XMLData = new XML();
XMLData.onLoad = cont;
XMLData.load("data.xml");

Og senere går jeg gennem XML'en hvor jeg finder mine data:
for (i=0; i<_root.node.childNodes.length; i++) {
        if (_root.node.childNodes[i].nodeName == "udseende") {
            _root.dataTekst_txt += _root.node.childNodes[i].firstChild+"<br><br>";
        }
    }

Hvor root.dataText_txt er svarer til den tekst der vises på skærmen (mit dynamiske tekstfelt har variablen dataText_txt tilknyttet).

Ovenstående virker fint, som sagt bortset fra de ekstra mellemrum.

Hoejrup: Desværre - jeg har prøvet. Tak for forslaget! Det er rigtigt at "whitespaces" bliver fjernet, men tilsyneladende bliver et space i starten af en linie ikke betragtet som whitespace.

Og removeWhitespace() virker heller ikke.

/OLF
Avatar billede olf Nybegynder
28. januar 2003 - 17:47 #6
barklund: Desværre har jeg ikke mulighed for at henvise til et link - det er et projekt der endnu ikke må vises på nettet :-(

Jeg henter xml'en sådan her:
XML.prototype.ignoreWhite = true;
XMLData = new XML();
XMLData.onLoad = cont;
XMLData.load("data.xml");

Og senere går jeg gennem XML'en hvor jeg finder mine data:
for (i=0; i<_root.node.childNodes.length; i++) {
        if (_root.node.childNodes[i].nodeName == "udseende") {
            _root.dataTekst_txt += _root.node.childNodes[i].firstChild+"<br><br>";
        }
    }

Hvor root.dataText_txt er svarer til den tekst der vises på skærmen (mit dynamiske tekstfelt har variablen dataText_txt tilknyttet).

Ovenstående virker fint, som sagt bortset fra de ekstra mellemrum.

Hoejrup: Desværre - jeg har prøvet. Tak for forslaget! Det er rigtigt at "whitespaces" bliver fjernet, men tilsyneladende bliver et space i starten af en linie ikke betragtet som whitespace.

Og removeWhitespace() virker heller ikke.

/OLF
Avatar billede barklund Nybegynder
28. januar 2003 - 17:52 #7
Så laver vi da bare en dummy-trim:

var i,t;
for (i=0; i<_root.node.childNodes.length; i++) {
        if (_root.node.childNodes[i].nodeName == "udseende") {
            t = _root.node.childNodes[i].firstChild.nodeValue;
            while (t.charAt(0) == " ") t = t.substr(1);
            _root.dataTekst_txt += t+"<br><br>";
        }
    }
Avatar billede olf Nybegynder
28. januar 2003 - 18:02 #8
Desværre, så vil det heller ikke hjælpe. Outputtet ser nemlig således ud (nu prøver jeg lige igen og ser om jeg kan vise det...):

Dette er min
&nbsp;tekst hvor der
forhåbenligt i
dette eksempel
&nbsp;er mellemrum
i linie 2 og 5.

Din kode vil kun fjerne mellemrummet, hvis det optræder først i teksten, ikke sandt?

/OLF
Avatar billede olf Nybegynder
28. januar 2003 - 18:03 #9
(okay, det lykkedes heller ikke denne gang - men der hvor der står &nbsp; skulle symbolisere et mellemrum!)
Avatar billede barklund Nybegynder
28. januar 2003 - 18:30 #10
Jeg er nød til at se, hvordan din XML-fil ser ud... Kan du eventuelt sakse den pågældende del ud og maile til mig på morten@barklund.dk?

For jo, min tekst fjerner kun mellemrum først i noden - men hvorfor skulle den automatiske wordwrap (som der er slået til(?)) lave ekstra mellemrum - det giver ingen mening...
Avatar billede barklund Nybegynder
28. januar 2003 - 18:32 #11
(Og selvfølgelig kan du ikke skrive html-kode direkte i sit indlæg - det ville være fatalt og samtidig kunne man jo ikke længere skrive &nbsp; hvis man ville forklare noget... :o)
Avatar billede olf Nybegynder
28. januar 2003 - 21:28 #12
Okay, her er lidt af xml'en - den røber ikke for meget (jeg har skåret lidt i teksten...)

Jeg har dog ladet teksten i <forveksles> ladet blive fuldt ud, da det er her jeg har et eksempel. Se hvordan det ser ud i flash (dog et .gif billede) på http://www.doo.dk/tmp/tmp.gif

Problemet er (som jeg ser det) at der efter teksten "flokkene er desuden i sig selv" ikke er plads til til et mellemrum på linie tre - dette mellemrum bliver så flyttet ned på første plads i linie fire. På en normal HTML side, ville dette mellemrum på linie fire blive ignoreret, men i Flash bliver det vist. Med linie tre og fire henviser jeg til det tmp.gif billede som du kan se ovenfor. Håber at det er ved at være forståeligt hvad mit problem reelt er!

<fugl danskNavn="TAMDUE" latinNavn="COLUMBIA LIVIA" str="30-34 CM">
    <udseende>Varierer meget...</udseende>
    <forveksles>Den kan forveksles med de andre duearter, især ringdue, men dens to mørke vingebånd og en lille hvid overgump (ses næsten kun i flugt) gør den nem at kende. Det forhold, at der altid er forskellige farvevariationer i flokkene er desuden i sig selv et effektivt kendetegn.</forveksles>
    <sang>Sangen er...</sang>
    <forekomst>Dens sang er...</forekomst>
</fugl>
Avatar billede olf Nybegynder
28. januar 2003 - 21:41 #13
(Omvendt, så KUNNE det jo være at det virkede... e-mail adresser og url-adresser virker jo fint :-). Men du har ret - det udgør en sikkerhedsrisiko - men det er jo ikke alle sites der er klar over det...)
Avatar billede barklund Nybegynder
30. januar 2003 - 15:26 #14
Jeg forstår det nu - men jeg kan ikke genskabe det...

Jeg har lavet en lille dummy-fil, der består af en xml-fil kun med din "forveksles"-node i... Jeg har lavet et html-tekstfelt med Verdana i 8 pt og tilpasset størrelse af tekstfeltet, så linjerne ombrydes præcis som linjerne i dit screenshot... Jeg ser ikke noget ekstra mellemrum!
Avatar billede thingholm.dk Nybegynder
30. januar 2003 - 18:42 #15
Jeg læser lige med...
Avatar billede olf Nybegynder
30. januar 2003 - 19:09 #16
okay... Jeg har nu lavet en side:
http://www.doo.dk/tmp/test.html

Her ses fejlen (jeg må nu tilstå at jeg parser noget tekst sammen - en oplysning jeg ikke troede var relevant før, men jeg kunne ikke genskabe den uden at parse teksten...)

Alt sourcekode kan hentes her:
http://www.doo.dk/tmp/test.zip

Det skal lige siges, at jeg ikke bare kan ændre størrelsen på tekstboksen. Det vil ganske vist rette fejlen for lige præcis disse data, men så vil de bare opstå på andre data.

/OLF
Avatar billede olf Nybegynder
26. februar 2003 - 23:31 #17
Desværre ingen svar! Så jeg tager mine point igen.
Avatar billede olf Nybegynder
26. februar 2003 - 23:32 #18
Beklager...
Avatar billede barklund Nybegynder
27. februar 2003 - 00:04 #19
fair nok... jeg havde alligevel ingen ide om, hvordan det kunne opstå :o)

hvis jeg gennemskuer det, så skal jeg nok lægge en kommentar..
Avatar billede olf Nybegynder
13. marts 2003 - 11:39 #20
Løsningen er hermed fundet!

Problemet er, at jeg konkardinerer to XML-felter (dvs tekster). Og for at adskille teksterne, bruger jeg <br> tags. Og tilsyneladende, så har Flash et problem med disse <br> tags (også selvom det ikke er XML tekst vi taler om). For man kan åbenbart risikere at sidste linie i et tekstafsnit "rykker ind til højre", hvis afsnittet bliver efterfulgt af et <br> tag.

Løsningen var i stedet at bruge "newline"!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester