Toon posts:

[XML] <email>bla@bla.nl</email> error

Pagina: 1
Acties:

Verwijderd

Topicstarter
met een query in een php bestand genereer ik een xml bestand. een van de velden is <email> waartussen een email adres komt te staan. nou valt de XML parser over het "@"-teken, zodra er een email adres wordt geparst.

nou weet ik dat je het ">"-teken moet vervangen met > maar hoe vervang ik op die manier het "@"-teken. dat lijkt mij namelijk de oplossing. waarschijnlijk ga ik nog tegen meer tekens oplopen, dus ik ben eigenlijk ook opzoek naar een tabel waar alle "vertalingen" van die tekens te vinden is.

ik heb overal gezocht, maar zoekmachines (ook de got zoeker) vinden het @ teken niet zo leuk als je daarmee probeert te zoeken :|, dus wie kan me helpen?

edit:
zit foutje in de titel, de titel moet natuurlijk "email>bla@bla.nl</email>"zijn...

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Misschien heb je hier wat aan?

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Misschien werkt urlencode en urldecode. Ik ken het probleem, maar had toen nog geen oplossing gevonden...

[ specs ] [ Tweaker gallery ]


Verwijderd

Topicstarter
al gelezen, maar daar staat geen "vertaling" voor het @ teken, alleen maar over encoding van je xml file.

de encoding die ik gebruik is:
<?xml version="1.0" encoding="ISO-8859-1"?>

Verwijderd

zou je niet een </email> aan het einde zetten?

Verwijderd

In normale encoding heb je geen vertaling van het "apestaartje". M.a.w. creeer je eigen teken als dat mogelijk is in jouw case. Iets als <apestaart /> ofzo en replace dat elke keer met een @ wanneer nodig. Mogelijk kan je <[CDATA]> hiervoor gebruiken?

  • tomato
  • Registratie: November 1999
  • Niet online
Dit vind ik wel vreemd hoor. Het @ teken is naar mijn weten helemaal niet speciaal en is gewoon onderdeel van Latin 1 (ISO 8859-1), namelijk 40 hexadecimaal, 64 decimaal.

De bijbehorende entity is commat (van 'commercial at sign') en kun je dus gebruiken als &commat; of @ maar ik heb geen idee waarom dit nodig zou zijn.

Welke XML parser gebruik je?

  • rb338
  • Registratie: Januari 2001
  • Laatst online: 22-07 12:59
Verwijderd schreef op 14 oktober 2002 @ 14:10:
zou je niet een </email> aan het einde zetten?
Anders lees je ff z'n edit :z

Kvind 't trouwens ook maar raar dat ie struikelt over die @...
Weet je zeker dat dat je probleem is?
Hopelijk werkt &commat; dan wel :)

Verwijderd

Topicstarter
ik heb ook een hele tabel gevonden met alle vertalingen van alle characters (wel handig linkje)
http://www.htmlhelp.com/reference/charset/latin1.gif

en als ik met php de @ laat vervangen door &#64 vind de XML parser het allemaal wel okee :) ik snap ook niet waarom maar goed...
ik gebruik de parser van IE 6

Verwijderd

Gebruik een CDATA element ipv een gewoon element, daar kun je alles in kwijt.

Verwijderd

Topicstarter
ik moet zowieso nog een DTD maken - eerste keer dat ik een XML bestand maak. ik snap nu trouwens meteen waarom een DTD zo belangerijk is. :-D
nog maar ff goed lezen hoe zo'n DTD inelkander zit.

bedankt iig

  • Explore
  • Registratie: Maart 2001
  • Laatst online: 08-04-2011

Explore

Op zoek naar werk

Wellicht helpt Turbo XML dan. Een programmatje waarme je DTD's enzo kan opstellen. Van Corba, als ik me niet vergis. Is in Java geschreven dus multiplatform compatible.

[ specs ] [ Tweaker gallery ]


Verwijderd

rb338 schreef op 14 oktober 2002 @ 14:21:
Anders lees je ff z'n edit :z
anders vergelijk je ff mijn post-tijd en zijn edit-tijd.. denk je nou echt dat die pagina binnen 18 minuten ga refreshen? :P


edit by drm
Anders gaan we even met zijn allen bullshit replies geven |:( kappen daarmee dus.

[ Voor 0% gewijzigd door drm op 14-10-2002 16:16 ]


Verwijderd

Verwijderd schreef op 14 oktober 2002 @ 14:47:
ik moet zowieso nog een DTD maken - eerste keer dat ik een XML bestand maak. ik snap nu trouwens meteen waarom een DTD zo belangerijk is. :-D
nog maar ff goed lezen hoe zo'n DTD inelkander zit.

bedankt iig
of maak een schema, das tegenwoordig veel gebruikelijker. Xmlspy is een goede tool om dit mee te doen. Gewoon een brok xml maken en vervolgens een schema laten genereren.

Verwijderd

Topicstarter
ik heb nu een DTD gemaakt, maar de XML parser struikeld nog steeds over "@", "<" en ">".
dit is het XML bestand:
code:
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE overzicht SYSTEM "../shared/overzicht.dtd">
<overzicht>
<node>
<naam>pietje</naam>
<email>pietje@domein</email> <-- STRUIKEL
<overig>jadieja <dit is niet fijn></overig> <-- STRUIKEL
</node>
...
</overzicht>


en dit het DTD overzicht.dtd
code:
1
2
3
4
<!ELEMENT node (naam, email, overig ) >
<!ELEMENT naam ( #PCDATA ) >
<!ELEMENT email ( #PCDATA ) >
<!ELEMENT overig ( #PCDATA ) >


#PCDATA geeft volgens mij aan dat XML alle mogelijke tekens (dus ook "@", "<" en ">" moet kunnen pakken.

een oplossing om dit te omzeilen is de tijdens het genereren van de XML (met PHP) de gevaarlijke tekens eruit te halen... maar ik vind gewoon dat het op deze manier moet kunnen werken, andere betekend dat je tussen XML tags maar heel weinig ruimte heb mbt verschillende soorten tekens

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Verwijderd schreef op 04 november 2002 @ 14:04:
[code]
<overig>jadieja <dit is niet fijn></overig> <-- STRUIKEL
Dat ie daarover struikelt geloof ik wel ja... ennuh heb je die &commat nu al gebruikt? Zo ja, replace hierboven dan ook ff &lt en &gt

Professionele website nodig?


Verwijderd

Topicstarter
ik heb die &commat en < en > ook allebei al gereplaced, maarrrr er zullen hoogst waarschijnlijk nog meer van die "gevaarlijke" tekens boven water komen. en ik heb zin om elk gevaarlijk teken te moeten replacen. vind ik ook niet netjes...

alle gevaarlijke tekens replacen is php oplossing, ik wil xml/dtd oplossing (als het kan).

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Ik gebruik nagenoeg altijd UTF-8 encoding voor XML files..... <?xml version="1.0" encoding="UTF-8"?>
Editen doe ik met Ultraedit die kan UTF-8 lezen/schrijven en omzetten van/naar ASCII of unicode.
Om te controleren of het XML bestand 'goed' is; gewoon openen in Internet Explorer, dan zie je vanzelf wel of ie klaagt over character encoding.
Overigens, bizar dat hij struikelt over @, dat is een gewoon ASCII karakter en moet goed gaan. Weet je zeker dat er niet ergens een raar tekentje voor of achter staat, dat er uitziet als een spatie, maar het niet is?

Edit: oh ja en een schema of DTD zijn helemaal niet nodig, als je XML file niet goed is qua character encoding zal een schema of DTD niks helpen. Eerst je XML file fixen.

FireFox - neem het web in eigen hand


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Verwijderd schreef op 04 november 2002 @ 21:26:
ik heb die &commat en < en > ook allebei al gereplaced, maarrrr er zullen hoogst waarschijnlijk nog meer van die "gevaarlijke" tekens boven water komen. en ik heb zin om elk gevaarlijk teken te moeten replacen. vind ik ook niet netjes...

alle gevaarlijke tekens replacen is php oplossing, ik wil xml/dtd oplossing (als het kan).
Sorry hoor, maar het is inherent aan XML dat je deze tekens moet replacen. Een fatsoenlijke implementatie doet het volautomatisch voor je, en als jij toevallig zelf met string-appends wil/moet werken heb je pech en moet je het zelf replacen.

Exact hoe had je in gedachten dat de XML-parsers moeten begrijpen dat de ene < van jouw interne data is en de volgende van de XML-nodes zelf? :?

Professionele website nodig?


  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

De enige tekens die echt escaped moeten zijn in elke XML ongeacht character encoding:
code:
1
2
3
4
5
<   -->  &lt;
>   -->  &gt;
&   -->  &amp;   (let op bij character entities zoals A )
"   -->  &quot;
'   -->  &apos;

FireFox - neem het web in eigen hand


Verwijderd

Topicstarter
damn, dankzij die laatste post weet ik nu eindelijk hoe het zit. deze illegale characters vervang ik nu en alles werkt ineenkeer...
er bleek tussen de twee email tags ook nog eens een < en > voor te komen waartussen als klap op de vuurpijl ook nog eens een @ in voorkwam (<email><pietje@.domein.nl> Pietje Puk</email>). de parser struikelde daarom steeds over de @. het leek immers of er IN een xml tag (namelijk <pietje@domein.nl>) een @ voorkwam, maar omdat ik de < en > nog niet verving struikelde die daar over.

weer wat geleerd: vervang die illegale karakters... (les 1 eigenlijk...)

bedankt voor jullie (on)geduld ;-)

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Als toegift nog: andere karakter escapings ('entity refs') zoals Ò of gaan ook NIET werken omdat dit HTML built-in entities zijn. De enige built-in entities van XML zijn zoals opgesomd in mijn vorige msg.
De XML parser zal stuklopen en melden dat je een undefined entity gebruikt.

FireFox - neem het web in eigen hand


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 29-08 19:47

Bosmonster

*zucht*

PommeFritz schreef op 05 november 2002 @ 11:42:
De enige tekens die echt escaped moeten zijn in elke XML ongeacht character encoding:
code:
1
2
3
4
5
<   -->  <
>   -->  >
&   -->  &   (let op bij character entities zoals A )
"   -->  "
'   -->  &apos;


lang leve PHP's htmlspecialchars().. die doet dus exact alleen die entities.. en zorgt er dus voor dat de &'s in de entitities zelf niet vervangen worden. Hoe voorgekauwder kun je het krijgen ;)

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 10-07 04:13

PommeFritz

...geen friet

Bosmonster schreef op 05 november 2002 @ 18:22:
lang leve PHP's htmlspecialchars()..
Gezien de naam van die functie: zie vooral mijn posting hierboven over HTML entities! >:) Ik geef je op een briefje dat deze functie niet werkt voor XML documenten.

FireFox - neem het web in eigen hand

Pagina: 1