Adicionar mais nodes no XML

5 respostas
D

Ola pessoal eu estou tentando gerar um aruivo xml pelo java e ate agora sem problemas, porém o xml esta desse jeito a seguir


-
6321
SMWTES1
American Tower
69.0
4

eu queria colocar um outro ( por exemplo) embaixo do , mas nw estou conseguindo

eu queria que o xml ficasse assim por exemplo


-
6321
SMWTES1
American Tower
69.0
4

-
6321
SMWTES1
American Tower
69.0
4

alguém poderia me ajudar, agradeço desde ja

public void saveSearch() throws Exception {
        // Create a XMLOutputFactory
        XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
        // Create XMLEventWriter
        XMLEventWriter eventWriter = outputFactory.createXMLEventWriter(new FileOutputStream(configFile));
        // Create a EventFactory
        XMLEventFactory eventFactory = XMLEventFactory.newInstance();
        XMLEvent end = eventFactory.createDTD("\n");
        // Create and write Start Tag
        StartDocument startDocument = eventFactory.createStartDocument();
        eventWriter.add(startDocument);

        // Create config open tag
        StartElement configStartElement = eventFactory.createStartElement("",
                "", "config");
        eventWriter.add(configStartElement);
        eventWriter.add(end);
        // Write the different nodes
        int i = 0;
        createNode(eventWriter, "idSite", MainScreen.idSite);
        createNode(eventWriter, "NomeSite", MainScreen.capa[1][i++]);
        createNode(eventWriter, "Owner", MainScreen.capa[1][i++]);
        createNode(eventWriter, "StructureHeight", MainScreen.capa[1][i++]);
        createNode(eventWriter, "AlturaAndar", MainScreen.capa[1][i++]);


        eventWriter.add(eventFactory.createEndElement("", "", "config"));
        eventWriter.add(end);
        eventWriter.add(eventFactory.createEndDocument());
        eventWriter.close();


    }

5 Respostas

nel

Oi!

Não é um XML bem formado esse, cadê a tag ROOT, por exemplo?
No seu caso, seria a tag config.

Sendo assim, seriam dois XML´s e não um com duas tags ROOT. Um XML pode conter apenas uma tag ROOT, as outras podem ser repetidas N vezes.

Como sugestão, podes criar uma tag ROOT chamada configs e dentro dela você adicionar vários XML, que na realidade são várias configs, mas da forma como disse, está incorreto. Veja, o que eu quero dizer:

<?xml version="1.0" encoding="UTF-8" ?> 
<configs>

<config> 
<idSite>6321</idSite> 
<NomeSite>SMWTES1</NomeSite> 
<Owner>American Tower</Owner> 
<StructureHeight>69.0</StructureHeight> 
<AlturaAndar>4</AlturaAndar> 
</config> 

 <config> 
<idSite>6321</idSite> 
<NomeSite>SMWTES1</NomeSite> 
<Owner>American Tower</Owner> 
<StructureHeight>69.0</StructureHeight> 
<AlturaAndar>4</AlturaAndar> 
</config> 

</configs>

Percebe a diferença amigo?
Agora tens um único XML bem formado com n configurações.

Leia sobre XML.

Abraços.

D

entendi o que você quis dizer, estou querendo fazer exatamente isso, porém naõ estou conseguindo fazer isso no java

eu tentei criar outros StartElement configStartElement = eventFactory.createStartElement("", "", "config"); eventWriter.add(configStartElement);
mas nao consegui

nel

DBZ:
entendi o que você quis dizer, estou querendo fazer exatamente isso, porém naõ estou conseguindo fazer isso no java

eu tentei criar outros StartElement configStartElement = eventFactory.createStartElement("", "", "config"); eventWriter.add(configStartElement);
mas nao consegui

Eu costumo usar DOM para criação de XML.
Mas tem o xStream, que é bem simples de se utilizar.

O que acontece contigo é a lógica que usa, e também terás de gerar um loop para criação das tags repetidas, no seu caso, terá apenas a tag ROOT configs e em seguida ir gerando várias tags config, respeito a endentação que deseja.

Abraços.

D

Obrigado por responder tão rapido nel

eu dei uma lida no DOM e no xStream, mas nao consegui achar a parte em que eles salvam os dados em um arquivo XML.
posso estar sendo meio ignorante e nw pude perceber isso mas vou tentar dar uma vasculhada mais a fundo pra ver se eles conseguem fazer isso

Caso eu consiga fazer o arquivo eu coloco a solução posteriormente aqui okz

nel

DBZ:
Obrigado por responder tão rapido nel

eu dei uma lida no DOM e no xStream, mas nao consegui achar a parte em que eles salvam os dados em um arquivo XML.
posso estar sendo meio ignorante e nw pude perceber isso mas vou tentar dar uma vasculhada mais a fundo pra ver se eles conseguem fazer isso

Caso eu consiga fazer o arquivo eu coloco a solução posteriormente aqui okz

Com o xStream podes até criar um Objeto que representa o seu XML e depois gerar o mesmo em seguida. Veja aqui. Sobre o DOM, você cria um Element, que adiciona a ele um Text, segue um exemplo interessante aqui.

Podes usar o que usa já, se resolve o seu problema.
Basta alterar o seu código para gerar N nodos.

Abraços.

Criado 17 de junho de 2011
Ultima resposta 17 de jun. de 2011
Respostas 5
Participantes 2