Erro ao tentar parsear um XML

6 respostas
SanjuanRJ
<dados>
<item>
<id>278</id>
<nome>a arte em sombrancelhas</nome>
</item>
<item>
<id>285</id>
<nome>A.R INSTALAÇÕES ELÉTRICAS EM GERAL E MANUTENÇÃO</nome>
</item>
<item>
<id>284</id>
<nome>ALEF CENTRO EDUCACIONAL</nome>
</item>
<item>
<id>171</id>
<nome>Assistencia Médica Veterinária Domiciliar</nome>
</item>
<item>
<id>270</id>
<nome>assistência técnica neto & ferreira</nome>
</item>
<item>
<id>187</id>
<nome>Assistência Tecnica Tecnobier</nome>
</item>
<item>
<id>224</id>
<nome>astral saúde ambiental</nome>
</item>
<item>
<id>148</id>
<nome>ATC Academia Training Center</nome>
</item>
<item>
<id>175</id>
<nome>Atendimento Veterinário Domiciliar ? Drª Joelma Portella de Oliveira - CRMW - RJ 5789</nome>
</item>
<item>
<id>275</id>
<nome>aulas de dança</nome>
</item>
<item>
<id>214</id>
<nome>aviarte costura rápida !</nome>
</item>
<item>
<id>264</id>
<nome>BANCO BMG</nome>
</item>
<item>
<id>166</id>
<nome>Bar e Pensão tempero à gosto</nome>
</item>
<item>
<id>174</id>
<nome>Bazar Tirol ? Pet Shop &  Aquariofolia</nome>
</item>
<item>
<id>244</id>
<nome>beleza é saúde</nome>
</item>
<item>
</dados>

Dá um erro no primeio ç que aparece. Existe algum método de alguma classe que faz a conversão de caracreter especiais de xml em java?

6 Respostas

T

Não, você não especificou corretamente o encoding no seu XML. Uma vez especificado corretamente o Encoding tudo funciona OK.

Exemplo:

&lt;?xml version='1.0' encoding='ISO-8859-1' ?&gt;
... aqui vai o resto do seu XML ...

ou

&lt;?xml version='1.0' encoding='UTF-8' ?&gt;
... aqui vai o resto do seu XML ...
T

Isto aqui vai dar problemas.

&lt;nome&gt;Bazar Tirol ? Pet Shop &amp;  Aquariofolia&lt;/nome&gt;

Mas isto não dá:

&lt;nome&gt;Bazar Tirol ? Pet Shop &amp;amp;  Aquariofolia&lt;/nome&gt;

De modo geral, em vez de gerar o XML na mão, use uma biblioteca, porque há vários casos particulares que você precisa levar em conta.

SanjuanRJ

Tinha esquecido disso…

só deu mais um probleminha pq ele não aceitava & nas tags, mas eu fiz um replace("&","&"); e deu certo…

valeu, brigadão…

SanjuanRJ

Vou procurar aprender alguma biblioteca… valeu mesmo…

SanjuanRJ

Me ocorreu também que se eu colocar entre as tags o conteúdo, o parseador irá ignorar o que estiver no CDATA, assim aceitando qualquer coisa que venha contida nele.

![CDATA[ conteudo ]]>

T

Cuidado que CDATA não faz milagres. Eu prefiro que a biblioteca leve em conta esses casos especiais, em vez de ficar torcendo o cérebro para fazer as coisas acontecerem.

Criado 8 de outubro de 2007
Ultima resposta 8 de out. de 2007
Respostas 6
Participantes 2