Você está aqui: Java ::: Java + XML ::: SAX (Simple API for XML) |
Como extrair os valores de atributos de um documento XML usando o SAX (Simple API for XML)Quantidade de visualizações: 9162 vezes |
Nesta dica mostrarei como é possível usar o SAX (Simple API for XML) para extrair os valores dos atributos de um documento XML. Comece analisando o seguinte documento XML: Código para Pedido.xml: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <!-- Este arquivo XML representa um pedido de um cliente --> <pedido data="23/05/2010" numero="101"> <cliente id="545"> <endereco-entrega>Endereço de entrega do cliente</endereco-entrega> </cliente> <itens-pedido> <item id="543" tipo="CD" titulo="Roberto Carlos ao Vivo" /> <item id="123" tipo="DVD" titulo="Banda Cheiro de Amor"/> </itens-pedido> </pedido> Note que quase todos os elementos possuem atributos. Assim, o elemento <pedido> possui os atributos data e numero, enquanto o elemento <cliente> possui o atributo id. Os valores dos atributos dos elementos em um documento XML podem ser obtidos por meio do método getValue() da interface Attributes. Este método aceita o nome do atributo e retorna o seu valor. Neste exemplo vamos criar uma classe personalizada chamada SaxHandler que herda de DefaultHandler. A classe DefaultHandler possui um método startElement() que é notificado a cada vez que um novo elemento é encontrado no documento XML. Como este método, na classe DefaultHandler, não faz nada, nós temos que escrever nossa própria implementação. Vamos começar então escrevendo a classe SaxHandler (SaxHandler.java): ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class SaxHandler extends DefaultHandler{ @Override public void startElement(String uri, String localName, String qName, Attributes attrs) throws SAXException { // vamos obter a data e número do pedido if(qName.equals("pedido")){ // data do pedido: String data = attrs.getValue("data"); // número do pedido: String numero = attrs.getValue("numero"); System.out.println("Data do pedido: " + data); System.out.println("Número do pedido: " + numero); } // vamos obter também o id do cliente else if(qName.equals("cliente")){ // id do cliente: String id = attrs.getValue("id"); System.out.println("Id do cliente: " + id); } } } Veja que no corpo do método startElement() nós verificamos se o elemento atual é "pedido". Se for nós obtemos os valores dos atributos data e numero. Em seguida fazemos o mesmo com o elemento "cliente". Veja agora o código para a classe Main.java: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; public class Main { public static void main(String[] args){ try { // vamos criar e retornar uma nova instância da implementação SAX SAXParserFactory factory = SAXParserFactory.newInstance(); // vamos criar o parser SAXParser parser = factory.newSAXParser(); // vamos definir a classe tratador (handler) que extende a // classe DefaultHandler SaxHandler handler = new SaxHandler(); // finalmente vamos fazer o parsing do documento XML parser.parse("C:\\estudos_sax\\Pedidos.xml", handler); } catch(Exception ex){ ex.printStackTrace(System.out); } } } Ao executar este exemplo teremos o seguinte resultado: Data do pedido: 23/05/2010 Número do pedido: 101 Id do cliente: 545 |
Link para compartilhar na Internet ou com seus amigos: |
Java ::: Pacote java.awt.event ::: KeyEvent |
Java Swing - Como obter o caractere da tecla pressionada usando o método getKeyChar() da classe KeyEvent do JavaQuantidade de visualizações: 2978 vezes |
Em algumas situações nós precisamos obter o caractere da tecla pressionada em nossas aplicações Java Swing. Para isso podemos usar o método getKeyChar() da classe KeyEvent. Veja sua assinatura:public char getKeyChar() O retorno do método é um char representando o caractere associado à tecla "digitada" (pressionada e liberada). Veja um trecho de código no qual temos uma janela JFrame que implementa a interface KeyListener e reage ao evento keyTyped() mostrando a letra digitada: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudos; import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JOptionPane; public class Janela extends JFrame implements KeyListener{ public Janela(){ super("Eventos do Teclado"); Container c = getContentPane(); FlowLayout layout = new FlowLayout(FlowLayout.LEFT); c.setLayout(layout); // vamos adicionar o objeto listener addKeyListener(this); setSize(350, 250); setVisible(true); } @Override public void keyPressed(KeyEvent e){ // sem implementação } @Override public void keyReleased(KeyEvent e){ // sem implementação } @Override public void keyTyped(KeyEvent e){ // vamos obter o caractere que foi digitado char letra = e.getKeyChar(); // mostra o caractere digitado JOptionPane.showMessageDialog(null, "O caractere pressionado foi: " + letra); } public static void main(String args[]){ Janela j = new Janela(); j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } É importante observar que o valor retornado pelo método getKeyChar() só possui sentido quando usado com eventos KEY_TYPED, uma vez que o caractere não é exibido quando o método é usado com os eventos KEY_PRESSED e KEY_RELEASED. Note ainda que a tecla Shift pode ser usada durante este evento. Assim, se combinarmos Shift + "s", o retorno será "S". Este método retorna o valor da constante KeyEvent.CHAR_UNDEFINED se um caractere Unicode válido não existir para o evento de "digitação" da tecla. |
Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata) |
Java MySQL - Como obter uma lista das funções de strings e caracteres suportadas pelo MySQL usando o método getStringFunctions() da interface DatabaseMetaDataQuantidade de visualizações: 5271 vezes |
Em algumas situações gostaríamos de, via código, obter uma lista das funções de strings e caracteres suportadas pelo MySQL. Para isso podemos usar o método getStringFunctions() da interface DatabaseMetaData. É importante observar que, no Sun Microsystem's JDBC Driver for MySQL, a interface DatabaseMetaData é implementada por uma classe do mesmo nome, no pacote com.mysql.jdbc.DatabaseMetaData. E esta classe implementa o método getStringFunctions() de forma a retornar a lista de funções de string e caracteres separadas por vírgulas. Veja um trecho de código Java no qual listamos todas as funções de strings e caracteres suportados no MySQL 5.0: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package estudosbancodados; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.SQLException; public class EstudosBancoDados{ public static void main(String[] args) { // strings de conexão String databaseURL = "jdbc:mysql://localhost/estudos"; String usuario = "root"; String senha = "osmar1234"; String driverName = "com.mysql.jdbc.Driver"; try { Class.forName(driverName).newInstance(); Connection conn = DriverManager.getConnection(databaseURL, usuario, senha); // vamos obter um objeto da classe com.mysql.jdbc.DatabaseMetaData DatabaseMetaData dbmd = conn.getMetaData(); // vamos obter a lista de funções de strings e caracteres disponíveis // nesta versão do SQL Server String funcoesStringChar = dbmd.getStringFunctions(); // como a lista de funções está separada por vírgulas, vamos obter // uma matriz de strings String funcoes[] = funcoesStringChar.split(","); // vamos mostrar o resultado for(int i = 0; i < funcoes.length; i++){ System.out.println(funcoes[i]); } } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } catch (Exception e) { System.out.println("Problemas ao tentar conectar com o banco de dados: " + e); } } } Ao executarmos este código teremos o seguite resultado: ASCII BIN BIT_LENGTH CHAR CHARACTER_LENGTH CHAR_LENGTH CONCAT CONCAT_WS CONV ELT EXPORT_SET FIELD FIND_IN_SET HEX INSERT INSTR LCASE LEFT LENGTH LOAD_FILE LOCATE LOCATE LOWER LPAD LTRIM MAKE_SET MATCH MID OCT OCTET_LENGTH ORD POSITION QUOTE REPEAT REPLACE REVERSE RIGHT RPAD RTRIM SOUNDEX SPACE STRCMP SUBSTRING SUBSTRING SUBSTRING SUBSTRING SUBSTRING_INDEX TRIM UCASE UPPER |
Java ::: Dicas & Truques ::: Arquivos e Diretórios |
Como renomear um diretório em Java usando o método renameTo() da classe File - Arquivos e diretórios em JavaQuantidade de visualizações: 8872 vezes |
Nesta dica mostrarei como podemos usar o método renameTo() da classe File da linguagem Java para renomear um diretório. Veja que este método retorna boolean, ou seja, o valor true caso o diretório for renomeado com sucesso e false em caso contrário. Veja o código completo para o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- package arquivodecodigos; import java.io.*; public class Estudos{ public static void main(String[] args){ // diretorio com o nome antigo File dir1 = new File("c:\\java"); // diretorio com o novo nome File dir2 = new File("c:\\java_novo"); boolean ok = dir1.renameTo(dir2); if(ok){ System.out.println("Diretorio renomeado com sucesso."); } else{ System.out.println("Nao foi possivel renomear o diretorio."); } } } Ao executar este código Java nós teremos o seguinte resultado: Diretorio renomeado com sucesso. |
Vamos testar seus conhecimentos em |
Domínios de Deformações Vigas de concreto armado, com seções submetidas a um momento fletor e a um esforço cortante, são dimensionadas de tal forma que se determine uma armadura longitudinal para resistir ao momento fletor e uma armadura transversal para resistir ao esforço cortante. Analise as informações a seguir, a respeito da solicitação normal do tipo momento fletor: I) Solicitação de flexão simples ocorre quando a única solicitação atuante é o momento fletor. II) Solicitação de flexão composta ocorre quando, além do momento fletor, há uma força normal atuante. III) Solicitação de flexão oblíqua ocorre quando o plano de flexão compreende um eixo de simetria da seção transversal. Assinale a alternativa correta: A) Somente a afirmação I está correta. B) Somente as afirmações I e II estão corretas. C) Somente a afirmação II está correta. D) Somente a afirmação III está correta. E) Somente as afirmações II e III estão corretas. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Características do concreto armado A fissuração é um efeito importante nas estruturas de concreto e não deve ser desprezada. O conhecimento íntimo desse tipo de efeito é de vital importância para garantir a durabilidade e o desempenho das estruturas por longos anos. A seguir, correlacione os tipos de fissuração e as definições: 1 - Fissuras plásticas. 2 - Fissuras térmicas. 3 - Fissuras de retração por secagem. ( ) Desenvolvem-se por conta de tensões de tração devido à restrição interna causada por retração diferencial entre a superfície e o interior do concreto. ( ) Desenvolvem-se nas primeiras idades do concreto, após o endurecimento. ( ) Desenvolvem-se antes de o concreto estar endurecido, entre 1 e 8 horas após o lançamento. Agora, assinale a alternativa que traz a sequência correta: A) 1 - 2 - 3. B) 2 - 1 - 3. C) 3 - 1 - 2. D) 2 - 3 - 1. E) 3 - 2 - 1. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Ética e Legislação Profissional |
O código de ética profissional: Concorrência A estrutura de mercado denominada "livre concorrência" tem como principal característica a competição empresarial de maneira correta, transparente e honesta. Nesse ambiente, é necessária a regulamentação da economia por parte do Estado, pois isso gera benefícios aos consumidores. Marque a alternativa que apresenta os benefícios decorrentes da regulamentação. A) A coletividade passa a contar com mais opções de produtos importados, preços e qualidade, além de oferecer às empresas um ambiente econômico saudável. B) A coletividade passa a contar com mais opções de produtos, preços e menos rigor na qualidade, além de oferecer às empresas um ambiente econômico saudável. C) A coletividade passa a contar com mais opções de produtos, preços e qualidade, além de oferecer às empresas um ambiente econômico monopolista. D) A coletividade passa a contar com mais opções de produtos, preços e qualidade, além de oferecer às empresas um ambiente econômico saudável. E) Os Estados menos desenvolvidos passam a contar com isenção de impostos, mais opções de produtos, preços e qualidade, além de oferecer às empresas um ambiente econômico saudável. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em JavaScript |
Qual das instruções JavaScript abaixo envolve um array? A) var a = b ^ i; B) var a = b(i); C) var a = b[i]; D) var a = b >> i; Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Instalações Hidráulicas Prediais |
O projeto de instalação hidrossanitária É fundamental que o projeto hidrossanitário esteja de acordo com as legislações vigentes a fim de promover, principalmente, a segurança. De modo geral, um bom projeto hidrossanitário deve ser dimensionado objetivando atender a: A) demandas da edificação em um período de, no máximo, 10 anos. B) demandas da edificação em um período de até 10-20 anos. C) demandas da edificação em um período de até 20-30 anos. D) demandas da edificação em um período de até 40-50 anos. E) demandas da edificação em um período de mais de 50 anos. Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |