Mário Rui Melo Posted September 27, 2013 at 10:20 AM Report #526243 Posted September 27, 2013 at 10:20 AM (edited) Bom dia, estou com um problema ao abrir um XML, devido ao encoding de alguns caracteres. ao executar este código: $reader = new XMLReader(); $filename = 'teste.xml'; $resF = $reader->open( $filename ); while ( $reader->read() ) { ... Dá o seguinte erro: XMLReader::read() [xmlreader.read]: input conversion failed due to input error, bytes 0x90 0x54 0x49 0x43 Se alterar o XML, num editor HEX, e mudar de 0xc2 0x90 para 0xc3 0x89, o problema fica resolvido mas, o que eu queria era precaver essas situações, por exemplo, validando se o encoding do ficheiro é o q realmente está definido aqui: <?xml version="1.0" encoding="Windows-1252"?> O problema é q esse conjunto 0xc2 0x90 não é válido para o encoding definido... Penso q a aplicação que gerou o XML é q gerou este erro, mas não tenho acesso a essa aplicação. Alguém pode dar uma ajuda? Obrigado! Edited September 27, 2013 at 10:20 AM by Mário Rui Melo
yoda Posted September 27, 2013 at 01:18 PM Report #526301 Posted September 27, 2013 at 01:18 PM (edited) Tens de fazer um bypass aos erros para conseguires ler o ficheiro. Esta é a forma que costumo usar (repara no @ que suprime os erros do documento) : $doc = new DomDocument(); @$doc->load('teste.xml'); $xpath = new DOMXpath($doc); if ($e = $xpath->query('/node')) { foreach($e as $el) { // blabla } } Edited September 27, 2013 at 01:19 PM by yoda before you post, what have you tried? - http://filipematias.info sense, purpose, direction
Mário Rui Melo Posted September 27, 2013 at 03:16 PM Author Report #526332 Posted September 27, 2013 at 03:16 PM Yoda, obrigado mas o resultado é o mesmo. De qualquer forma, depois de muito investigar, descobri q, se alterar a primeira linha de <?xml version="1.0" encoding="Windows-1252"?> para <?xml version="1.0" encoding="iso-8859-1"?> funciona... Consegue-se então perceber que, um qq sw q gera SAFT's está a gerar XML com o encoding errado... Como é q podem ser vendidos SW's por preços exorbitantes, com erros destes?!?! Mas, afinal, quem está por trás desse SW não programadores como nós???? Valha-me o Santo Padroeiro dos Programadores 😄 Obrigado
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now