/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
xml-parser dur ikke sammen med æ, ø, å
Fra : J. Nielsen


Dato : 18-04-07 15:34

Hej (igen),

Dette er en fortsættelse af "Parsning ad XML-fil fejler første gang "æ"
findes", som jeg startede i aftes.

Jeg er nu kommet videre med mit problem, og kan reproducere det med et meget
simpelt eksempel. Mit håb er, at det vil gøre det lettere for jer derude at
hjælpe mig!

Mit problem er - som forklaret i den anden tråd - at min CDATA handler
bliver kaldt to gange, når CDATA-elementet er "Test af æøå - test af æøå".

Første gang den bliver kaldt er det med strengen "Test af " og anden gang er
det med strengen "æøå - Test af æøå".

Jeg forstår ikke hvorfor det sker; mit mål er, at den kun skal kaldes én
gang med hele strengen "Test af æøå - Test af æøå".

Er der en, der har en idé til, hvad der kan være galt???

Jeg har placeret tre filer på mit domæne:
http://jbro.dk/xmltest/input.xml
http://jbro.dk/xmltest/xmlparser.php
http://jbro.dk/xmltest/xmlparser.phpi

input.xml indeholder kun én linie:
<title>Test af æøå - Test af æøå</title>

xmlparser.php (du kan osse se koden ved at klikke på det tredje af de
ovenstående links):
<?php

$file = "input.xml";

function startElementHandler($parser, $name, $attrs) {
print("<br />start-element \"".$name."\"");
}

function endElementHandler($parser, $name) {
print("<br />end-element: \"".$name."\"");
}

function dataElementHandler($parser, $data) {
print("<br />data-element \"".$data."\"");
}

//$xml_parser = xml_parser_create();
$xml_parser = xml_parser_create("ISO-8859-1");

xml_set_element_handler($xml_parser, "startElementHandler",
"endElementHandler");
xml_set_character_data_handler($xml_parser, "dataElementHandler");

// Do not make all elements uppercase!
xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING,
"ISO-8859-1");

if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}

while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}

xml_parser_free($xml_parser);

?>



 
 
Michael Rasmussen (18-04-2007)
Kommentar
Fra : Michael Rasmussen


Dato : 18-04-07 17:16

On Wed, 18 Apr 2007 16:33:37 +0200
"J. Nielsen" <jakob_bro_n@hotmail.com> wrote:

> xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING,
> "ISO-8859-1");
>
Gør det nogen forskel, hvis du sætter encoding til utf-8?

--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.

J. Nielsen (18-04-2007)
Kommentar
Fra : J. Nielsen


Dato : 18-04-07 18:08

> > xml_parser_set_option($xml_parser, XML_OPTION_TARGET_ENCODING,
> > "ISO-8859-1");
> >
> Gør det nogen forskel, hvis du sætter encoding til utf-8?

Ja, men ikke til det bedre
"æøå" bliver nu skrevet som "Ã|Ã?Ã¥", og CDATA-handleren bliver stadig kaldt
to gange (anden gang lige inden "æ"):

start-element "title"
data-element "Test af "
data-element "Ã|Ã?Ã¥ - Test af Ã|Ã?Ã¥"
end-element: "title"




Michael Rasmussen (18-04-2007)
Kommentar
Fra : Michael Rasmussen


Dato : 18-04-07 18:32

On Wed, 18 Apr 2007 19:07:53 +0200
"J. Nielsen" <jakob_bro_n@hotmail.com> wrote:

>
> Ja, men ikke til det bedre
Nu ved vi da, at din tekst ikke er gemt i utf-8
--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste