[php/xml] parser loopt stuk op bijv. í

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben bezig om een parser te maken voor een XML feed.
Werkt allemaal top, alleen krijg ik nu de XML binnen en daar staan teksten in als:

code:
1
2
3
4
5
<?xml version="1.0"?>
<demo>
  <id>345</id>
  <tekst>Hier staat dan de tekst en ook dit: &iacute; bijvoorbeeld</tekst>
</demo>


De parser loopt stuk op í. (edit: GoT maakt er het daadwerkelijke teken van, het gaat dus om de code van bijv. de I acute...)
Weet iemand hoe ik dit kan voorkomen?? Ik heb echt geen idee!
Hij zet een <br> neer op de plek en stopt dan met parsen.

Wellicht een optie aan/uitzetten met xml_parser_set_option() ?
Als mijn code nodig is, even roepen.

[ Voor 35% gewijzigd door Verwijderd op 22-02-2004 19:21 ]


Acties:
  • 0 Henk 'm!

  • Alex
  • Registratie: Juli 2001
  • Laatst online: 20-08 21:38
De heren van React doen het volgende:
XML:
1
<board_pagetitle><![CDATA[[php/xml] parser loopt stuk op bijv. í - Programming &amp; Webscripting - GoT]]></board_pagetitle>

Deze post is bestemd voor hen die een tegenwoordige tijd kunnen onderscheiden van een toekomstige halfvoorwaardelijke bepaalde subinverte plagiale aanvoegend intentioneel verleden tijd.
- Giphart


Acties:
  • 0 Henk 'm!

  • Sendy
  • Registratie: September 2001
  • Niet online
Ik geloof dat het komt doordat & iacute; geen teken in XML is maar wel in HTML. Daardoor is je XML dus niet correct. Je zou eigenlijk & #205; moeten gebruiken. Zie ook http://www.zvon.org/xxl/characterReference/Output/I.html voor een character reference.

Acties:
  • 0 Henk 'm!

  • Dennis
  • Registratie: Februari 2001
  • Nu online
Als je de xml file niet zelf maakt heb je weinig keus, Sendy :).

Acties:
  • 0 Henk 'm!

Verwijderd

Sendy schreef op 22 februari 2004 @ 20:01:
Ik geloof dat het komt doordat & iacute; geen teken in XML is maar wel in HTML. Daardoor is je XML dus niet correct. Je zou eigenlijk & #205; moeten gebruiken. Zie ook http://www.zvon.org/xxl/characterReference/Output/I.html voor een character reference.
Of je geeft alles door met iso-8859-1 encoding.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ddc schreef op 22 februari 2004 @ 20:08:
Als je de xml file niet zelf maakt heb je weinig keus, Sendy :).
Zoals negen van de tien keer het geval is heb ik inderdaad ook nu geen keuze wat de gegevens en of tekensets in de XML feed zijn.

Ik kan dit dus niet wijzigen; is er een oplossing voor?
Verwijderd schreef op 22 februari 2004 @ 20:16:
[...]

Of je geeft alles door met iso-8859-1 encoding.
Hoe doe ik dit?
Ik kan namelijk de feed niet wijzigen?

[ Voor 25% gewijzigd door Verwijderd op 22-02-2004 20:19 ]


Acties:
  • 0 Henk 'm!

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 20-07-2024

PommeFritz

...geen friet

Klagen bij de bron van je XML feed, want die hoest invalide XML op.

FireFox - neem het web in eigen hand


Acties:
  • 0 Henk 'm!

Verwijderd

xml_parser_create ( 'ISO-8859-1' );

of

xml_parser_set_option ( $parser, XML_OPTION_TARGET_ENCODING, 'ISO-8859-1' );

[ Voor 12% gewijzigd door Verwijderd op 22-02-2004 20:22 ]


Acties:
  • 0 Henk 'm!

  • Sendy
  • Registratie: September 2001
  • Niet online
Moet je zo'n encoding niet specificeren in de XML? (behalve als het de default cp is...)

En, Cheatah, als je zo je parser maakt, pakt die dan wel meteen de & eacute;, of moet daarvoor de XML ook gewijzigd worden?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PommeFritz schreef op 22 februari 2004 @ 20:22:
Klagen bij de bron van je XML feed, want die hoest invalide XML op.
Is niet echt niet mogelijk, ik zal er wel netjes een melding van maken.
Leuk detail; het is een feed van een der neerlands grootse kranten.
Verwijderd schreef op 22 februari 2004 @ 20:22:
xml_parser_create ( 'ISO-8859-1' );

of

xml_parser_set_option ( $parser, XML_OPTION_TARGET_ENCODING, 'ISO-8859-1' );
Het lukt helaas niet, beide methodes resulteren net als voorheen in een xml_error:
undefined entity.

Acties:
  • 0 Henk 'm!

  • Sendy
  • Registratie: September 2001
  • Niet online
Misschien kan je dan eerst iets van XMLTidy over de XML halen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Sendy schreef op 23 februari 2004 @ 11:16:
Misschien kan je dan eerst iets van XMLTidy over de XML halen?
Ik weet niet precies wat het is, XMLTidy, maar er zijn ook wel andere oplossingen:
Eerst de hele XML file in een var stoppen, deze var vervolgens checken op entities, deze converten, en vervolgens verder gaan.

Maar ik denk misschien is er een nette Pars-oplossing?

Acties:
  • 0 Henk 'm!

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 20-07-2024

PommeFritz

...geen friet

In Java is het o.h.a. mogelijk een "entity resolver" aan te melden bij je XML parser, die onbekende entities kan vervangen door hun character representatie. Een soort escape hatch zeg maar. Deze entity resolver kun je dan vullen met alle bekende HTML entitiy namen en deze vervangen door het bijbehordende (unicode) karakter.
Geen idee of dat in PHP kan.

FireFox - neem het web in eigen hand


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Mijn kennis van de php xml parser is gelijk aan 0, maar ik denk er als volgt over:

Je kunt een XML parser geen xml laten parsen die niet valid is. Anders zou het immers geen XML parser zijn, niet?

Je ontkomt er dus niet aan om deze voor jou bekende foutjes te repareren. Een kleine inschatting van mijn kant is dat je alle & zal moeten vervangen door
code:
1
 &amp;

De parser zal deze xml entity omzetten naar "&" in de string die je (bijna) ongetwijfeld in html gaat laten zien.

Acties:
  • 0 Henk 'm!

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 20:49

DizzyWeb

Ondertiteld

Behalve dat
code:
1
&amp;
dus ook geen XML entity is.

[ Voor 16% gewijzigd door DizzyWeb op 23-02-2004 16:24 ]


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
DizzyWeb schreef op 23 februari 2004 @ 16:22:
Behalve dat
code:
1
&amp;
dus ook geen XML entity is.
Ik zou toch nog even je XML boeken erop naslaan als ik jou was.

Acties:
  • 0 Henk 'm!

  • bramseltje
  • Registratie: September 2001
  • Laatst online: 17-09 14:01
is het niet mogelijk om met een paar simpele tekstbased commando's je xml opnieuw te formatteren met de correcte iso (zoals hierboven gesuggereerd) erin, en dan pas te parsen?

Wel iets intensiever, maar ben je wel van ruzie met degene die de feed levert af...

Acties:
  • 0 Henk 'm!

  • Sendy
  • Registratie: September 2001
  • Niet online
Juist, en daarvoor zijn de *Tidy programmas.

Een url is http://www.w3.org/People/Raggett/tidy/, maar de link in dit document genoemd (http://tidy.sf.net) bestaat niet. Ook schijnt XML niet heel goed ondersteund te worden.

Misschien dat anderen een 'betere' tidy kennen?

Acties:
  • 0 Henk 'm!

  • PommeFritz
  • Registratie: Augustus 2001
  • Laatst online: 20-07-2024

PommeFritz

...geen friet

Als je binnenkomende XML niet correct is of geen juiste encoding aangeeft, kun je geen enkele aanname doen over de inhoud van het bericht!
Je kunt dus niet een (ASCII) text search-replace gaan doen.
Want voor hetzelfde geld is de XML gecodeerd in UTF-16.
Je kunt dit alleen doen als je 100% zeker weet, door een andere bron dan de encoding declaratie uit de XML file zelf, wat de encoding van de XML is...

FireFox - neem het web in eigen hand

Pagina: 1