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.
[code]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();
}
}
}[/code]
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