[RESOLVIDO]Extração de dados de arquivo XML usando SAX Parser

1 resposta
cle.darsie

Boa tarde galera,

Estou querendo extrair certos dados de um arquivo .XML usando o SAX Parser, porém estou tendo muitas dificuldades.

É mais ou menos assim, preciso criar um parser XML que extraia o nome dos wsdl's (e.g.: /AlertaSecurity.wsdl) e adicionar uma URL na frente. A URL deve ser
passada via parâmetro. Como no exemplo abaixo:

http://host:123/AlertaSecurity.wsdl
http://host:123/AlteracaoDataVencimentoSecurity.wsdl
http://host:123/AnaliseCreditoSecurity.wsdl

Ai eu preciso adicionar um método extra que somente imprime o nome dos wsdl's. Como no exemplo
abaixo:

AlertaSecurity.wsdl
AlteracaoDataVencimentoSecurity.wsdl
AnaliseCreditoSecurity.wsdl

Muitos lugares que eu usei pra pegar um exemplo, é totalmente diferente as explicações.

Vou postar aqui meu código, é uma coisa bem simples, mas como é a primeira vez que eu estou vendo isso, estou apanhando.
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class Parser extends DefaultHandler {

	private String url = "http://host:123/";

	public Parser() throws ParserConfigurationException, SAXException,
			IOException {
		SAXParserFactory spf = SAXParserFactory.newInstance();
		SAXParser parser = spf.newSAXParser();
		parser.parse("build.xml", this);
	}

	@Override
	public void startDocument() throws SAXException {
		System.out.println("<<< Reading XML File >>>\n ");
	}

	@Override
	public void startElement(String uri, String localName, String name,
			Attributes atts) throws SAXException {
		for (int i = 0; i < atts.getLength(); i++) {
			if (atts.getLocalName(i).equalsIgnoreCase("wsdl")) {
				System.out.println(url + atts.getValue(i));
			}
		}
	}

	@Override
	public void characters(char[] chars, int offset, int len)
			throws SAXException {
	
	}

	@Override
	public void endElement(String uri, String localName, String name)
			throws SAXException {
		
	}

	@Override
	public void endDocument() throws SAXException {
		System.out.println("\n<<< End XML File Reading >>>");
	}

	public static void main(String[] args) {
		try {
			new Parser();

		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Ai, no caso do meu código, o que eu estou fazendo é pegar somente os valores e imprimindo-os na tela.
Está saindo assim os resultados:

[color=red]<<< Reading XML File >>>

http://host:123/${basedir}/${real.wsdl.dir}/AlertaSecurity.wsdl
http://host:123/${basedir}/${real.wsdl.dir}/AlteracaoDataVencimentoSecurity.wsdl
http://host:123/${basedir}/${real.wsdl.dir}/AnaliseCreditoSecurity.wsdl
http://host:123/${basedir}/${real.wsdl.dir}/AnatelProconSecurity.wsdl
http://host:123/${basedir}/${real.wsdl.dir}/AntecipacaoCreditoSecurity.wsdl
http://host:123/${basedir}/${real.wsdl.dir}/AparelhoSecurity.wsdl
http://host:123/${basedir}/${real.wsdl.dir}/AreaRegistroSecurity.wsdl
http://host:123/${basedir}/${real.wsdl.dir}/ArgumentoScriptInteligenteSecurity.wsdl
http://host:123/${basedir}/${real.wsdl.dir}/AssociacaoScriptInteligenteSecurity.wsdl

<<< End XML File Reading >>>[/color]

Mas preciso que seja do modelo dos exemplos que eu dei acima.

Fico no aguardo de uma ajuda.
Obrigado

1 Resposta

cle.darsie

Resolvido. Obrigado pela ajuda! =D

Criado 18 de abril de 2011
Ultima resposta 19 de abr. de 2011
Respostas 1
Participantes 1