writer; writer = new FileWriter(getNomeArquivo()); ObjectOutputStream out = getXstream().createObjectOutputStream(writer, "contatos"); writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); for (Contato C : list) { out.writeObject(C); } out.close(); System.out.println("Arquivo gerado:" + getNomeArquivo()); openFile(new File(getNomeArquivo())); } catch (IOException ex) { Logger.getLogger(XmlUtil.class.getName()).log(Level.SEVERE, null, ex); } } public void openFile(File document) throws IOException { Desktop dt = Desktop.getDesktop(); dt.open(document); }}Alterando a funcao exportarXML (solucao 3)No arquivo springlesson07.view.contato.frameListaContatos.java private void exportarXML() { List<Contato> listaContato = this.getDao().listar(); XmlUtil xmlU = new XmlUtil(); xmlU.exportarArquivoContatos(listaContato); JOptionPane.showMessageDialog(null, "Arquivo gerado\n " + xmlU.getNomeArquivo()); }Apos alterar, Teste o programa, clique no botao exportar XMLFigura 16 - arquivo gerado pela classe XmlUtil , e retorno de sucesso ao usuarioSe o arquivo exportou corretamente, vamos ver como importar ?8) Implementando Importacao arquivos XML.Precisamos adicionar o comportamento do botao Importar XML. Logo, precisamos mostrar uma caixa de dialogo p/ o usuario poder escolher o arquivo XMLI) Usuario seleciona o arquivoNo arquivo springlesson07.view.contato.frameListaContatos.java , clique duas vezes no botao importar XML e dentro do actionPerformed escreva uma nova funcao importarXML e deixe o NB gerar o codigoFigura 17 - Utilizando o NB p/ gerar o codigo da funcao importarXMLP/ abrir a caixa de dialogo simplesmente e mostrar o arquivo que o usuario selecionou o seguinte codigo atende : private void importarXML() { JFileChooser chooser = new JFileChooser(); int retornoJFC = chooser.showOpenDialog(null); if (retornoJFC == JFileChooser.APPROVE_OPTION) { System.out.println("Arquivo escolhido: \n" + "Pasta: " + chooser.getSelectedFile().getAbsolutePath() + "\n" + "Arquivo: " + chooser.getSelectedFile().getName()); } }Teste o programa , clique no importar arquivo,selecione um arquivo e veja as informacoes no console do NB:Figura 18 - Caixa de dialogo p/ o usuario escolher o arquivo a ser importadoPorem queremos apenas arquivos xml : p/ isso adicionamos a funcao um filtro (muito simples):II) Adicionando um filtro ao JFileChooserimport javax.swing.filechooser.FileNameExtensionFilter;private void importarXML() { JFileChooser chooser = new JFileChooser("Selecione um arquivo XML"); chooser.setFileFilter(new FileNameExtensionFilter("Arquivos XML", "xml")); int retornoJFC = chooser.showOpenDialog(null); if (retornoJFC == JFileChooser.APPROVE_OPTION) { System.out.println("Arquivo escolhido: \n" + "Pasta: " + chooser.getSelectedFile().getAbsolutePath() + "\n" + "Arquivo: " + chooser.getSelectedFile().getName()); } }Teste o programa , e veja filtro funcionando.Figura 19 - filtro dos tipos de Arquivo por extensao XMLCerto. ja temos o nome e caminho do arquivo. Agora faremos o esquema para importar para nosso banco de dados na tabela contato.Precisamos fazer algumas modificacoes antes de continuar.Para fazer a leitura de Arquivos XML utilizando o esquema desse exemplo, precisamos usar o recurso Annotations .III) Implementando as anotacoesa) no arquivo modelo springlesson07.model.Contato.javapackage springlesson07.model;import com.thoughtworks.xstream.annotations.XStreamAlias;@XStreamAlias("contato")public class Contato { private int id; private String nome; private String telefone; public Contato() { this.id = 0; }//gets e sets}b) precisamos criar uma classe Contatos.java , incluido a anotacao por que geramos o arquivo dentro de tags <contatos></contatos>Figura 20 - Adicionando as anotacoes p/ o XStreamessa classe fica assim:package springlesson07.model;import com.thoughtworks.xstream.annotations.XStreamAlias;import java.util.List;@XStreamAlias("contatos")public class Contatos { private List<Contato> list; public Contatos() { } public List<Contato> getList() { return list; } public void setList(List<Contato> list) { this.list = list; }}IV) implementando a funcao importarXML no arquivo springlesson07.utils.XmlUtil.javaAdicione outra dependencia do XStream ao projeto (conforme o passo 5 etapa II): dom4j-1.61.jar Figura 21 - adicione a dep do XStream : dom4j-1.61.jarusaremos outros imports para essa funcao :import com.thoughtworks.xstream.io.xml.Dom4JDriver;import