Estrutura para armazenar arquivo XML, Lista de Listas?

4 respostas
cassioso

Saudações,

Alguém poderia me indicar uma estrutura de objetos interessante para armazenar as tags de arquivos XML?

Tenho uma classe UtilXML que possui um método para gerar um arquivo XML a partir das especificações passadas por parâmetro.

Gerar um arquivo com as tags:

*	<principal>
 *		<categoria>
 *			<atributo_01>valor</atributo_01>
 *			<atributo_02>valor</atributo_02>
 *		</categoria>
 *	</principal>

Como posso armazenar esta estrtutura?

Pensei em uma lista de listas…

Sei que tem o Document, Element, etc… Mas queria algo ainda mais simples para ser passado como parametro e o UtilXML fazer o enquadramento no formato XML.

4 Respostas

peerless

já viu a possibilidade de usar XStream ? - tem um tutorial no guj tbm.

spadinha

ou vc pode estar estudando o dom4j tb…

nandobgi

Eu utilizo JDOM

http://www.jdom.org/

[ ]'s

cassioso

Legal esse XStream, ele pega as classes e atributos das instancias e consegue gerar as tags para xml… gostei.

Aqui como é algo bem simples, estou utilizando DocumentBuilderFactory, org.w3c.dom.Document, org.w3c.dom.Element, e consigo escrever sem precisar de uma API adicional… Vou colocar o código aqui:

public class UtilXML{

	public void criarArquivoXML() {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = null;
		Document doc = null;

		try {
			builder = dbf.newDocumentBuilder();
		} catch (ParserConfigurationException e1) {
			e1.printStackTrace();
		}

		doc = builder.newDocument();

		Element rootElement = doc.createElement("config");

		Element childElement1 = doc.createElement("item");
		Element e1 = doc.createElement("usuario");
		
		e1.appendChild(doc.createTextNode("cassioso"));

		doc.appendChild(rootElement);

		rootElement.appendChild(childElement1);
		childElement1.appendChild(e1);
		
		Element childElement2 = doc.createElement("item");
		Element e2 = doc.createElement("site");
		e2.appendChild(doc.createTextNode("http://cassioso.wordpress.com"));
		
		rootElement.appendChild(childElement2);
		childElement2.appendChild(e2);
		
		try {
			Transformer t = TransformerFactory.newInstance().newTransformer();
			t.transform(new DOMSource(doc), new StreamResult(
					new FileOutputStream(new File(nomeArquivo))));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Mas achei interessante como o XStream gera o XML a partir da estrutura de classes definida.

Criado 23 de maio de 2008
Ultima resposta 26 de mai. de 2008
Respostas 4
Participantes 4