avarata Posted April 19, 2013 at 11:01 AM Report #503961 Posted April 19, 2013 at 11:01 AM Olá, Estou a desenvolver um projecto que lê ficheiros XML. O ficheiro é gerado por um outro programa por isso não pode ser alterado. A estrutura é deste género: <FDDCell id="G94BsU2"> <attributes> <OCNSActivation>false</OCNSActivation> <activityFactorCcch>66</activityFactorCcch> <antennaAngleOfOpening>63</antennaAngleOfOpening> <appAltitude>0</appAltitude> <appAltitudeUncertainty>47</appAltitudeUncertainty> ... O que eu gostava de saber é se é possível ler o valor que está dentro dos <>? Porque assim não precisava de estar a criar tags para cada um dos parâmetros.
Rui Carlos Posted April 19, 2013 at 07:17 PM Report #504085 Posted April 19, 2013 at 07:17 PM Quer ler o nome da tag ou os atributos? Que biblioteca é que estás a usar para ler o XML? Rui Carlos Gonçalves
avarata Posted April 22, 2013 at 01:01 PM Author Report #504314 Posted April 22, 2013 at 01:01 PM Eu queria ler mesmo o noma da tag, e a segui o atributo. Estava a usar o SAX parser, mas não consegui encontrar nenhuma solução. Estou a tentar ler linha a linha e interpretar o texto.
Rui Carlos Posted April 22, 2013 at 01:32 PM Report #504320 Posted April 22, 2013 at 01:32 PM Podes mostrar uma versão resumida do código que tens? Olhando para este exemplo, no método startElement tens acesso ao nome da tag. Rui Carlos Gonçalves
aladino77 Posted April 23, 2013 at 03:38 AM Report #504431 Posted April 23, 2013 at 03:38 AM Veja o meu exemplo http://www.portugal-a-programar.pt/topic/59982-ler-xml-file/ Para ler atributos public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // <FDDCell id="G94BsU2"> if (qName.equalsIgnoreCase("FDDCell")) { tagTurma = true; fddCell = new FDDCell(); fddcell.id = attributes.getValue("id"); } }
avarata Posted April 23, 2013 at 11:00 AM Author Report #504497 Posted April 23, 2013 at 11:00 AM O que eu queria fazer era evitar ter que identificar a tag. Nesse caso que apresentaste tens qName.equalIgnoreCase("FDDCell"). Eu queria evitar ter que escrever no código todas as minhas tags, porque são várias centenas. A minha ideia era que ele lesse automaticamente o que está dentro das <> e fosse possível ter acesso a isso. Estou a pensar num método mais rudimentar, ler linha a linha como se fosse um ficheiro de texto.
Rui Carlos Posted April 23, 2013 at 11:06 AM Report #504500 Posted April 23, 2013 at 11:06 AM O nome da tag está em qName (e localName). Não precisas de o comparar com nada. Podes pegar no valor e colocá-lo num HashMap, por exemplo. Rui Carlos Gonçalves
avarata Posted April 23, 2013 at 12:19 PM Author Report #504523 Posted April 23, 2013 at 12:19 PM O nome da tag está em qName (e localName). Não precisas de o comparar com nada. Podes pegar no valor e colocá-lo num HashMap, por exemplo. Boa! Grande ajuda, assim já consigo fazer tudo o que quero. Vou experimentar. Desde já obrigado a todos!!!
avarata Posted April 23, 2013 at 12:47 PM Author Report #504526 Posted April 23, 2013 at 12:47 PM (edited) [Edit:] Mais uma questão. É possível saber quando se chega ao respectivo </tag>? Já consegui, no endElement imprimo a tag. Edited April 23, 2013 at 01:39 PM by avarata
avarata Posted April 24, 2013 at 10:38 AM Author Report #504640 Posted April 24, 2013 at 10:38 AM Olá, É possível verificar qual o tipo do meu conteúdo? <Contacto> <Nome>Alberto</Nome> <Idade><15/Idade> <email>false</email> </Contacto> Isto é, no código apresentado ao ler o conteúdo do Nome automaticamente verificar que é uma String, e ao ler o conteúdo da Idade automaticamente verificar que é um Int.
Rui Carlos Posted April 25, 2013 at 09:54 AM Report #504759 Posted April 25, 2013 at 09:54 AM Podes ver se o casting para inteiro funciona ou não. Rui Carlos Gonçalves
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