XMLStreamWriter em Java StAX
A API de streaming para XML adicionada ao Java 6 fornece uma interface útil XMLStreamWriter que é usada para escrever documentos XML. esta API não requer a construção de nenhuma estrutura de objeto específica, como no DOM, e a execução de qualquer tarefa intermediária. Ele também oferece suporte a namespaces por padrão, o que é muito útil em situações mais avançadas.
Os métodos incorporados para criar o objeto XMLStreamWriter e gravar dados nele estão listados a seguir:
- writeStartDocument()
- writeStartElement()
- writeCharacters()
- writeEndElement()
- writeEndDocument()
Existem certas limitações anexadas com XMLStreamWriter em java StAX, as quais são principalmente as seguintes:
- Ainda é possível criar documentos XML não bem formados que, por exemplo, contêm mais de um elemento raiz ou definição de namespace ausente.
- XMLStreamWriter não recua sua saída, então pode ser um pouco difícil de ler usando um editor de texto simples. Portanto, para a leitura, sugere-se abri-lo em um navegador da Web, a maioria dos quais possui uma interface amigável para visualizar a estrutura dos documentos XML.
Procedimento:
- Crie uma instância de XMLStreamWriter usando XMLOutputFactory
- Escreva o cabeçalho do XML e prossiga para escrever os elementos.
- Depois de adicionar elementos, podemos adicionar atributos, dados de caracteres ou CDATA
- Fechar elementos abertos
- Esvaziar elementos ou escrever comentários
- Fechar e terminar o documento XML
Agora vamos discutir mais como eles são escritos mais tarde, na implementação dos mesmos em nosso programa java.
Etapa 1: Crie uma instância de XMLStreamWriter usando XMLOutputFactory.
XMLOutputFactory outputFactory = XMLOutputFactory.newFactory(); XMLStreamWriter xmlStreamWriter = outputFactory.createXMLStreamWriter(outputStream);
Etapa 2: Grave o cabeçalho do XML e prossiga para gravar os elementos.
xmlStreamWriter.writeStartElement("gfg");
Etapa 3: Depois de adicionar elementos, podemos adicionar atributos, dados de caracteres ou CDATA.
xmlStreamWriter.writeAttribute("id", "10"); xmlStreamWriter.writeCharacters("hello world!"); xmlStreamWriter.writeCData("more text data");
Etapa 4: Fechamento de elementos abertos
xmlStreamWriter.writeEndElement();
Etapa 5: esvaziar elementos ou escrever comentários, mas observe que é uma etapa opcional
xmlStreamWriter.writeEmptyElement("used & new"); xmlStreamWriter.writeComment("Thank you!");
Etapa 6: Fechar e finalizar o documento XML.
xmlStreamWriter.writeEndDocument(); xmlStreamWriter.close();
Exemplo
// Java Program to Illustrate XMLStreamWriter in Java StAX
// Importing required classes
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
// Main class
public class StaxXMLStreamWriter {
// Main driver method
public static void main(String[] args)
throws FileNotFoundException, XMLStreamException,
UnsupportedEncodingException
{
// Try block to check for exceptions
try {
// File Path
String filePath = "D:\\gfg_file.xml";
// Creating FileWriter object
Writer fileWriter = new FileWriter(filePath);
// Getting the XMLOutputFactory instance
XMLOutputFactory xmlOutputFactory
= XMLOutputFactory.newInstance();
// Creating XMLStreamWriter object from
// xmlOutputFactory.
XMLStreamWriter xmlStreamWriter
= xmlOutputFactory.createXMLStreamWriter(
fileWriter);
// Addoing elements to xmlStreamWriter
// Custom input element addition
xmlStreamWriter.writeStartElement("gfg");
xmlStreamWriter.writeAttribute("id", "10");
xmlStreamWriter.writeCharacters("hello world!");
xmlStreamWriter.writeCData("more text data");
xmlStreamWriter.writeEndElement();
xmlStreamWriter.writeEmptyElement("used & new");
xmlStreamWriter.writeComment("Thank you!");
xmlStreamWriter.writeEndDocument();
// Writing the content on XML file and
// close xmlStreamWriter using close() method
xmlStreamWriter.flush();
xmlStreamWriter.close();
// Display message for successful execution of
// program
System.out.println(
"XML file created successfully.");
}
// Catch block to handle exceptions
catch (Exception e) {
// Print the line number where exception occurs
e.printStackTrace();
}
}
}
Saída:
<gfg id="10">hello world! <![CDATA[more text data]]> </gfg> <used & new/> <!--Thank you!-->
Conclusão:
Streaming API for XML fornece uma maneira muito conveniente, rápida e com uso eficiente de memória para escrever documentos XML sem se preocupar com detalhes e caracteres especiais de escape. É uma ótima alternativa ao DOM, especialmente quando você não precisa manter e gerenciar a árvore DOM na memória por qualquer motivo.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva