parse String to XML

Essa é uma dica interessante. Imagine que você tem uma String que representa um xml e você quer fazer um parse para um objeto XML.
Nese caso você pode gerar um objeto do tipo org.w3c.dom.Document.

O Bloco de código abaixo faz isso para você.

public static Document string2Document(String str) 
       throws SAXException, 
              ParserConfigurationException, IOException {
 
       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
       DocumentBuilder builder = factory.newDocumentBuilder();
       
      return builder.parse(new InputSource(new StringReader(xmlSource)));
}

Agora com o Document gerado, você tem varias formas de ler ou editar o conteúdo do XML.
Abaixo um exemplo que peguei do blog do Mkyong

O XML que iremos manipular tem a estrutura da imagem abaixo:

Sem título

Abaixo uma classe que abre e exibe os dados do arquivo XML parseado para o org.w3c.dom.Document


package com.mkyong.seo;
 
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
 
public class ReadXMLFile {
 
  public static void main(String argv[]) {
 
    try {
        //Aqui vamos assumir que a variavel fXmlFilerecebeu o texto referente ao arquivo XML informado no bloco acima.
        String fXmlFile= ...
	
        // Uso o método criado no inicio do post para converter a String contendo o xml no Document
	Document doc = string2Document(fXmlFile); 
	doc.getDocumentElement().normalize(); 
	System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
 
	NodeList nList = doc.getElementsByTagName("staff"); 
	System.out.println("----------------------------");
 
	for (int temp = 0; temp < nList.getLength(); temp++) {
 
		Node nNode = nList.item(temp);
 
		System.out.println("\nCurrent Element :" + nNode.getNodeName());
 
		if (nNode.getNodeType() == Node.ELEMENT_NODE) {
 
			Element eElement = (Element) nNode;
 
			System.out.println("Staff id : " + eElement.getAttribute("id"));
			System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent());
			System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent());
			System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent());
			System.out.println("Salary : " + eElement.getElementsByTagName("salary").item(0).getTextContent());
 
		}
	}
    } catch (Exception e) {
	e.printStackTrace();
    }
  }
 
}

Referências
Javadoc Interface Document
How To Read XML File In Java – (DOM Parser)

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s