Use XSLT. � mais f�cil. Eu anexei uma folha de estilos (merge.xsl) que
resolve seu problema. O arquivo arquivos.xml cont�m:

<arquivos>
  <arquivo>um.xml</arquivo>
  <arquivo>dois.xml</arquivo>
  <arquivo>tres.xml</arquivo>
</arquivos>

Supondo que voc� tenha, no mesmo diret�rio, os arquivos um.xml, dois,xml e
tres.xml o resultado ser�:

<?xml version="1.0" encoding="iso-8859-1"?>
<documentos>
  <aluno id="1">
    <nome>x</nome>
    <idade>10</idade>
  </aluno>
  <aluno id="2">
    <nome>y</nome>
    <idade>12</idade>
  </aluno>
  <aluno id="3">
    <nome>z</nome>
    <idade>15</idade>
  </aluno>
</documentos>

Voc� pode inclui-lo no seu c�digo usando as classes do pacote
javax.xml.transform:

// parser � objeto do tipo javax.xml.parsers.DocumentBuilder
Source xmlSource =
     new DOMSource( parser.parse("arquivos.xml") );
Result result =
     new DOMResult( parser.newDocument() );
Source xslStyle  =
     new StreamSource("merge.xsl");
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer(xslStyle);
t.transform(xmlSource, result);

O objeto result agora cont�m a �rvore DOM do documento
resultado.xml anexo.

(Esta solu��o foi adaptada de um exerc�cio que passei aos alunos do �ltimo
curso de XSLT que ministrei - s� mudei os nomes dos tags para ficarem iguais
ao seu problema).

[]s Helder

--
Helder da Rocha ([EMAIL PROTECTED])
Web Consultant
www.argonavis.com.br
S�o Paulo, Brazil
+55 (11) 3044 4398
+55 (11) 9291 0567

----- Original Message -----
From: "Mauri Ferrandin" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, June 05, 2002 5:31 PM
Subject: [java-list] XML, juntar Documentos !


> Seguinte :
>
> Tenho v�rios documentos XML armazenas em objetos da classe
>
> org.w3c.dom.Document do tipo:
>
> <doc01>
>     <aluno>
>             <nome>x</nome>
>             <idade>10</idade>
>     </aluno>
> </doc01>
>
> e
>
> <doc02>
>     <aluno>
>             <nome>x</nome>
>             <idade>10</idade>
>     </aluno>
> </doc02>
>
> e quero criar um documento integrado da seguinte forma :
>
> <documentos>
>
>     <--Inserir aqui doc01 como n� filho do raiz documentos-->
>     <--Inserir aqui doc03 como n� filho do raiz documentos-->
>     <--Inserir aqui doc04 como n� filho do raiz documentos-->
>     ...
>     <--Inserir aqui docn como n� filho do raiz documentos-->
>
> </documentos>
>
> Algu�m sabe se exiiste alguma API para XML que fa�a isto de maneira mais
> f�cil pois na API do Xerces, eu tenho que percorrer cada documento em
> �rvore lendo cada Node e gravando no documento final, isto � maior
pedreira.
>
> Aguardo retorno !
>
> T+
>
> --
>
>
============================================================================
===============================
> Professor Mauri Ferrandin - [EMAIL PROTECTED] N�cleo(Kernel) de Inform�tica
> UNERJ - Centro Universit�rio de Jaragu� do Sul - SC - Brazil
> Linux registred user #121834
>
> "Em pol�tica, � melhor n�o falar; se falar, � bom n�o dizer; se disser, �
bom n�o escrever;
> se escrever, conv�m n�o assinar; se assinar, assine com a m�o errada."
(Idalino Ribeiro)
>
>
>
>
>
>
>
>
>
>
> ------------------------------ LISTA SOUJAVA ----------------------------
> http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
> d�vidas mais comuns: http://www.soujava.org.br/faq.htm
> regras da lista: http://www.soujava.org.br/regras.htm
> historico: http://www.mail-archive.com/java-list%40soujava.org.br
> para sair da lista: envie email para [EMAIL PROTECTED]
> -------------------------------------------------------------------------
>
<doc>
  <aluno id="3">
    <nome>z</nome>
    <idade>15</idade>
  </aluno>
</doc>
<doc>
  <aluno id="2">
    <nome>y</nome>
    <idade>12</idade>
  </aluno>
</doc>
<arquivos>
  <arquivo>um.xml</arquivo>
  <arquivo>dois.xml</arquivo>
  <arquivo>tres.xml</arquivo>
</arquivos>
<doc>
  <aluno id="1">
    <nome>x</nome>
    <idade>10</idade>
  </aluno>
</doc>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                version="1.0">

    <xsl:output encoding="iso-8859-1" />
    
    <!-- 1. Esta � a raiz do arquivo-fonte (arquivos.xml) -->
    <xsl:template match="/">
       <documentos>
       <xsl:apply-templates />
       </documentos>
    </xsl:template>

    <!-- 2. Seleciona cada nome em <arquivo> e passa para a fun��o
         document("uri") que carrega o seu conte�do, que por
         sua vez fica guardado na vari�vel $documento.
         Depois, faz um apply-templates come�ando na raiz
         do documento importado -->

    <xsl:template match="arquivo">
         <xsl:variable name="documento" select="document(.)" />
         <xsl:apply-templates select="$documento" mode="unidade"/>
    </xsl:template>

    <!-- 3. Esta � a raiz de cada arquivo importado -->
    <xsl:template match="/" mode="unidade">
       <xsl:apply-templates />
    </xsl:template>

    <!-- 4. O elemento aluno e todo o seu conte�do
         � copiado para o documento resultado -->
    <xsl:template match="aluno">
       <xsl:copy-of select="." />
    </xsl:template>

</xsl:stylesheet>

<?xml version="1.0" encoding="iso-8859-1"?>
<documentos>
  
  <aluno id="1">
    <nome>x</nome>
    <idade>10</idade>
  </aluno>

  
  <aluno id="2">
    <nome>y</nome>
    <idade>12</idade>
  </aluno>

  
  <aluno id="3">
    <nome>z</nome>
    <idade>15</idade>
  </aluno>

</documentos>
------------------------------ LISTA SOUJAVA ----------------------------
http://www.soujava.org.br  -  Sociedade de Usu�rios Java da Sucesu-SP
d�vidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-------------------------------------------------------------------------

Responder a