xml ayrıştırma hatası: 'Geçersiz karakter'

0 Cevap php

Ben bir widget için google hava API kullanarak ediyorum.

All is fine and dandy except that today I encountered a problem that I cannot solve. When called with this location:

http://www.google.com/ig/api?weather=dunjkovec,medimurska,croatia&hl=en

Ben bu hatayı alıyorum:

XML parse error 9 'Invalid character' at line 1, column 169 (byte index 199)

Ben sorun burada olduğunu sanıyorum: Nedelišće

Kod bloğu bu biridir:

$parser = xml_parser_create('UTF-8');
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
$ok = xml_parse_into_struct($parser, $data, $values);
if (!$ok) {
    $errmsg = sprintf("XML parse error %d '%s' at line %d, column %d (byte index %d)",
    xml_get_error_code($parser),
    xml_error_string(xml_get_error_code($parser)),
    xml_get_current_line_number($parser),
    xml_get_current_column_number($parser),
    xml_get_current_byte_index($parser));
}

$ Veri xml içeriği ve $ değerler boştur.

Birisi bana yardımcı olabilir misiniz? Thank you very much!

EDIT ----------------------------------

Hüseyin'in yazıyı okuduktan sonra sorun dosya çağrılır alır şekilde olduğunu keşfetti.

Ben file_get_contents ve cURL çalıştı. Hem döner:

Bu sorun yaratır hattıdır. Ya da ben öyle sanıyordum! Ben bu html_entity_decode ($ veri, ENT_NOQUOTES, 'UTF-8') çalıştı ve bu çalışma değildi, bu yüzden bir keşfetmek, ben xml içeriğini echo edemez yapılmış, ben sadece onları print_r ve sonuçlarını görebilirsiniz html kaynak! Çalışır dünyanın herhangi başka bir yerde olan, sadece bu bir sorun yaratır ... Ben :-( ağlamak istiyorum

EDIT 2 --------------------------------

Umurunda herkes için. Ben API gelen xml dosyasını aldıktan sonra bu kod hatları ile sorun giderilmiştir:

$data = mb_convert_encoding($data, 'UTF-8', mb_detect_encoding($data, 'UTF-8, ISO-8859-1', true));
$data = html_entity_decode($data,ENT_NOQUOTES,'UTF-8'); 

then parse the xml, it works like a charm. I marked hussein's answer because it got me on the right track.

0 Cevap