Olá galera,
Eu achei um tutorial sobre essa biblioteca!! Muito boa e muito fácil de fazer um XML e ler também, porém tem 2 problemas.
1- Quando eu vou escrever outro XML, ele apaga o conteúdo do anterior e cria um novo, não tem como ir cadastrando no arquivo?
2- Como eu faço para atualizar o valor das tags que tem no XML? Por exemplo, tenho a tag
Vou postar aqui a classe que eu fiz para testar:
/*
* Main.java
* Created on 8 de Outubro de 2007, 15:29
*/
package muralxml;
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
/**
*
* @author anderson
*/
public class Main {
// Metodo para ler o arquivo XML
public static void ler() throws JDOMException, IOException {
File f = new File("mural.xml");
SAXBuilder sb = new SAXBuilder();
Document d = sb.build(f);
Element mural = d.getRootElement();
List elements = mural.getChildren();
Iterator i = elements.iterator();
while(i.hasNext()) {
Element element = (Element)i.next();
System.out.println("Código: " + element.getAttributeValue("id"));
System.out.println("Prioridade: " + element.getAttributeValue("prioridade"));
System.out.println("Para: " + element.getChildText("para"));
System.out.println("De: " + element.getChildText("de"));
System.out.println("Corpo: " + element.getChildText("corpo"));
}
}
// Metodo para escrever o arquivo
public static void escrever(String p, String d, String c) {
Element mural = new Element("mural");
Element mensagem = new Element("mensagem");
Element para = new Element("para");
Element de = new Element("de");
Element corpo = new Element("corpo");
mensagem.setAttribute("id", "1");
Attribute prioridade = new Attribute("prioridade","-1");
mensagem.setAttribute(prioridade);
para.setText(p);
de.setText(d);
corpo.setText(c);
mensagem.addContent(para);
mensagem.addContent(de);
mensagem.addContent(corpo);
mural.addContent(mensagem);
Document doc = new Document();
doc.setRootElement(mural);
try {
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream("mural.xml"), "UTF8"));
XMLOutputter xout = new XMLOutputter();
xout.output(doc,out);
System.out.println("XML criado com sucesso!");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException, JDOMException {
String opcao = "";
String para, de, corpo;
System.out.println("--Seja bem-vindo ao MuralXML--");
System.out.println("Opções:");
System.out.println("1 - Criar o XML");
System.out.println("2 - Ler o XML");
System.out.println("3 - Sair");
System.out.println("-----------------");
do {
System.out.print("\nDigite a opção: ");
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
opcao = in.readLine();
if (opcao.equals("1")) {
System.out.println("-----------------");
System.out.print("Informe para: ");
in = new BufferedReader(new InputStreamReader(System.in));
para = in.readLine();
System.out.print("Informe de: ");
in = new BufferedReader(new InputStreamReader(System.in));
de = in.readLine();
System.out.print("Informe corpo: ");
in = new BufferedReader(new InputStreamReader(System.in));
corpo = in.readLine();
escrever(para, de, corpo);
} else if (opcao.equals("2")) {
ler();
} else if (opcao.equals("3")) {
System.out.println("Saindo...");
} else {
System.out.println("Opção Inválida!!!!!");
}
} while(!opcao.equals("3"));
}
}
Obrigado desde já pela ajuda.
Abraços.
