Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Appendere DOM xml ad un'altro

    Ciao ragazzi, ho un problema a lavoro che non riesco a risolvere. Il problema è questo:

    Nel mio file PHP creo due DOM xml (usando le classi DOMDocument, DOMElement ecc del PHP). E' possibile appendere al primo DOM il secondo DOM o bisogna per forza ciclare gli elementi del secondo ed appenderli uno alla volta al primo?
    In poche parole ho questa situazione:

    DOM uno:
    codice:
    <root> 
        <a> 
              dom1 primo
             <c> dom1 nodo </c> 
        </a>
        <a> 
               dom1 secondo 
              <c> dom1  nodo </c> 
        </a>
    </root>
    DOM 2:
    codice:
    <root> 
        <a> 
              dom2 primo
             <c> dom2 nodo </c> 
        </a>
        <a> 
               dom2 secondo 
              <c> dom2 nodo </c> 
        </a>
    </root>
    e vorrei avere come risultato questo:
    codice:
    <root> 
        <a> 
              dom1 primo
             <c> dom1 nodo </c> 
        </a>
        <a> 
               dom1 secondo 
              <c> dom1  nodo </c> 
        </a>
        <a> 
              dom2 primo
             <c> dom2 nodo </c> 
        </a>
        <a> 
               dom2 secondo 
              <c> dom2 nodo </c> 
        </a>
    </root>
    Esiste una funzione che mi faccia questo in un colpo solo? Il secondo DOM avere ho moltissimi nodi (più di 20000) per questo volevo evitare di ciclare gli elementi appendendoceli uno alla volta. Inizialmente avevo provato usando la funzione importNode(DOMNode $node) sull'ultimo nodo del primo DOM, passandogli come parametro il riferimento al nodo <root> del secondo DOM, ma così facendo mi inserisce nel DOM risultante anche il nodo <root> del secondo DOM...e non va bene
    Per capirci avevo questo risultato
    codice:
    <root> 
        <a> 
              dom1 primo
             <c> dom1 nodo </c> 
        </a>
        <a> 
               dom1 secondo 
              <c> dom1  nodo </c> 
        </a>
        <root>
             <a> 
                   dom2 primo
                  <c> dom2 nodo </c> 
             </a>
             <a> 
                    dom2 secondo 
                   <c> dom2 nodo </c> 
             </a>
         </root>
    </root>
    Non riesco a venirne fuori... spero voi abbiate una soluzione.

    Roberto

  2. #2
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    ti tocca ciclare.

    una roba tipo:

    foreach($secondo->getElementsByTagName('a') as $el){
    $t= $primo->importNode($el,1);
    $primo->documentElement->appendChild($t);
    }

    echo $primo->saveXML();

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.