[PHP] XML parser geeft enter's

Pagina: 1
Acties:
  • 122 views sinds 30-01-2008
  • Reageer

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik heb even een simpele PHP XML parser gemaakt die die Tweakers.net turbotracker gebruikt om zijn gegevens uit te halen. Maar nu geeft hij bij een bepaald item een paar enter's te veel:
code:
1
2
3
4
5
6
7
8
9
  <id>18149</id> 
  <titel>nVidia Personal Cinema hands-on preview</titel> 
  <editor>Robin Evers</editor> 
  <categorie>Hardware</categorie> 
  <bron>GamePC</bron> 
  <link>http://www.gamepc.com/reviews/hardware_review.asp?review=personalcinema&page=1&mscssid=&tp=</link> 
  <tijd>28-08-2001 16:19</tijd> 
  <timestamp>999008370</timestamp> 
  <reacties>10</reacties>

Geeft mij:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ID: 18149
TITEL: nVidia Personal Cinema hands-on preview
EDITOR: Robin Evers
CATEGORIE: Hardware
BRON: GamePC
LINK: http://www.gamepc.com/reviews/hardware_review.asp?review=personalcinema
LINK: &
LINK: page=1
LINK: &
LINK: mscssid=
LINK: &
LINK: tp=
TIJD: 28-08-2001 16:19
TIMESTAMP: 999008370
REACTIES: 10

Ik maak gewoon gebruik van de XML functie's in PHP. Als iemand de code wil zien moet ie het maar even zeggen.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Moet & niet & zijn volgens de officiele XML-standaard?

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11 01:34
& veroorzaakt de problemen. Deze wordt gebruikt om als escape teken voor veel symbolen.

Een & teken moet eigenlijk in een XML file opgenomen worden als & als je het echt wel netjes wilt doen. Misschien dat de tracker aangepast moet worden :) .

Een XML parser moet eigenlijk een fatal error opleveren als hij een onbekend escape teken tegenkomt. In dit geval had hij dit dus moeten doen.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op dinsdag 28 augustus 2001 22:08 schreef marcusk het volgende:
Moet & niet & zijn volgens de officiele XML-standaard?
Weet ik niet, ik stel we de goeie encoding in voor de XML parser:
Turbotracker: <?xml version="1.0" encoding="ISO-8859-1" ?>
PHP:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
$xml_file = "http://www.tweakers.net/turbotracker.dsp";

$xml_parser = xml_parser_create("ISO-8859-1");
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);
xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING, "ISO-8859-1");
xml_set_element_handler($xml_parser, "startElement", "endElement");
xml_set_character_data_handler($xml_parser, "characterData");

if (!($fp = fopen($xml_file, "r"))) {
    die("Could not open $xml_file for parsing!\n");
}

while ($data = fread($fp, 4096)) {
    xml_parse($xml_parser, $data, feof($fp));
}

xml_parser_free($xml_parser);
?>

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11 01:34
marcusk: Moet & niet & zijn volgens de officiele XML-standaard?
Inderdaad dus :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Dit is dus een taak van Femme om dit op te lossen?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11 01:34
jelmervos: Dit is dus een taak van Femme om dit op te lossen?
Yep. En dan nog maar hopen dat andere niet XML compatible tooltjes het dan nog snappen :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik open even een LA topic, dan leest ie het misschien. :)

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Op dinsdag 28 augustus 2001 22:11 schreef jelmervos het volgende:
Dit is dus een taak van Femme om dit op te lossen?
Nope, jij moet 't in je link Element oplossen (& vervangen door &).
Dan werkt 't zowel voor jouw XML-oplossing als voor de gewone HTML-links van de turbotracker... :)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Bij Slashdot escapen ze hem wel, en bij op http://www.w3.org/xml staat ook dat je hem moet escapen.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 00:04

chem

Reist de wereld rond

ja, of je opent die file, en str_replace't al die
code:
1
&

naar
code:
1
&amp;

;)

Klaar voor een nieuwe uitdaging.


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Volgens mij is dat niet de bedoeling van XML?

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Op dinsdag 28 augustus 2001 22:30 schreef jelmervos het volgende:
Bij Slashdot escapen ze hem wel, en bij op http://www.w3.org/xml staat ook dat je hem moet escapen.
Prachtig, en welkom in de wereld van de interfaces. :)
Ga er wanneer je externe data gebruikt altijd van uit dat die externe partij z'n toegeleverde data niet zal wijzigen alleen omdat jouw tools erover struikelen. En dan ben jij degene die die incompatibiliteit moet oplossen.
Met een beetje mazzel past Femme 't wel aan, en dat is dan mooi meegenomen, maar bij de volgende partij loop je tegen hetzelfde aan.

En de volgende en de volgende...

Verwijderd

Op dinsdag 28 augustus 2001 22:31 schreef jelmervos het volgende:
Volgens mij is dat niet de bedoeling van XML?
Was ook niet de bedoeling bij bv. seriele communicatie:

[STX]<data.....>[ETX]<bcc>

Maar daar hebben we onderhand ook al een stuk of 20 varianten op.

Iedereen wil zich graag aan de standaard houden, zolang 't maar ZIJN standaard is.

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11 01:34
Afterlife: Nope, jij moet 't in je link Element oplossen (& vervangen door &).
Dan werkt 't zowel voor jouw XML-oplossing als voor de gewone HTML-links van de turbotracker... :)
Lijkt mij juist wel. De turbo tracker beweert een XML bestand te zijn. Dat is het niet. Dat moet dus aangepast worden.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11 01:34
Afterlife: Prachtig, en welkom in de wereld van de interfaces. :)
En jij welkom in de wereld van XML :) . Het doel van XML is juist dat iedereen in ieder geval dezelfde markup syntax aanhoudt. Alles wat beweert XML te zijn moet zich ook aan deze standaard houden.
Ga er wanneer je externe data gebruikt altijd van uit dat die externe partij z'n toegeleverde data niet zal wijzigen alleen omdat jouw tools erover struikelen.
Alle tools zouden erover moeten struikelen. Het is ongeldige XML. Het heeft absoluut niets te maken met de tools van jelmervos. Dit is een bug.
maar bij de volgende partij loop je tegen hetzelfde aan.
En zou je die partij er weer op moeten wijzen dat ze niet XML compatible zijn.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • marcusk
  • Registratie: Februari 2001
  • Laatst online: 26-09-2023
Op dinsdag 28 augustus 2001 22:36 schreef Afterlife het volgende:

[..]

Prachtig, en welkom in de wereld van de interfaces. :)
Ga er wanneer je externe data gebruikt altijd van uit dat die externe partij z'n toegeleverde data niet zal wijzigen alleen omdat jouw tools erover struikelen. En dan ben jij degene die die incompatibiliteit moet oplossen.
Met een beetje mazzel past Femme 't wel aan, en dat is dan mooi meegenomen, maar bij de volgende partij loop je tegen hetzelfde aan.

En de volgende en de volgende...
Een goede xml-parser accepteerd zulke invoer gewoon niet. De bedoeling van XML is nou juist om compatibiliteitsproblemen (wat een woord!) op te lossen!

edit:
mbravenboer was eerder :)

Verwijderd

Op dinsdag 28 augustus 2001 22:44 schreef mbravenboer het volgende:
En jij welkom in de wereld van XML :) .
Dank je, maar daar zit ik al een tijdje in. :)
Alle tools zouden erover moeten struikelen. Het is ongeldige XML. Het heeft absoluut niets te maken met de tools van jelmervos. Dit is een bug.
100% mee eens, maar ik weet ook dat 't heel vaak een stuk productiever en efficienter is om om bugs van anderen heen te werken dan om te wachten tot die ander 't heeft aangepast.
En zou je die partij er weer op moeten wijzen dat ze niet XML compatible zijn.
En dan weer 3 maand wachten op een antwoord en nog 's een half jaar op een aanpassing. Zal in dit geval wel niet zo'n vaart lopen (Femme is wat dat betreft freak genoeg), maar kom daar maar eens om bij een grote leverancier. Ook al geven ze je gelijk, dan nog moet 't verzoek naar de ontwikkelafdeling, moet eerst getest worden of al hun eigen applicaties 't daarna nog wel doen, en duurt 't een eeuwigheid voor 't inderdaad ook op productieniveau is aangepast.

Geloof me, meestal kun je dan beter zelf workarounds inbouwen, dan werkt 't tenminste binnen een week. :7

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11 01:34
Afterlife: Dank je, maar daar zit ik al een tijdje in. :)
Ut was ook niet zo serieus bedoeld hoor ;) . Ik had al eens een aantal goeie posts van je gezien :) .
100% mee eens, maar ik weet ook dat 't heel vaak een stuk productiever en efficienter is om om bugs van anderen heen te werken dan om te wachten tot die ander 't heeft aangepast.
Wellicht dat je helaas in de praktijk regelmatig gelijk zult hebben.

Toch moet dit soort 'wangedrag' absoluut bestreden worden :) . XML is wereldwijd geaccepteerd als een goede standaard en moet strikt nageleefd worden. Zodra er aangerommeld gaat worden ontstaat er een chaos :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Op dinsdag 28 augustus 2001 22:58 schreef mbravenboer het volgende:
Wellicht dat je helaas in de praktijk regelmatig gelijk zult hebben.
Weet ik helaas wel zeker. Neem bv. HITIS, een prestigieuze standaardisering voor interfaces binnen de hotel automatisering. (wanneer je op die pagina naar beneden scrollt, zie je ook wel wat grote namen staan).
We hebben nu 3 'standaard' HITIS interfaces, en alle drie zijn ze op bepaalde punten weer anders omdat de "andere kant" z'n eigen interpretatie van de standaard heeft...
Toch moet dit soort 'wangedrag' absoluut bestreden worden :) . XML is wereldwijd geaccepteerd als een goede standaard en moet strikt nageleefd worden. Zodra er aangerommeld gaat worden ontstaat er een chaos :) .
Helemaal mee eens. Gewoon blijven zeuren, maar ondertussen moet er wel iemand zijn die zorgt dat 't draait. :)
Pagina: 1