2016-01-11 16 views
5

Sono nuovo nell'usare XML e lo sto testando per un progetto, (non possiamo usare JSON, abbiamo già XML esistente che deve essere usato).jQuery AJAX XML nella stessa struttura

Il mio problema è che desidero aggiungere i dati dall'XML nella stessa identica struttura che viene visualizzata.

<?xml version="1.0" encoding="UTF-8" ?> 
<?xml-stylesheet type="text/xsl" href="../xsl/html.xsl" ?> 
<htmldoc> 
    <heading> 
     Odyssey Heading HTML Test in XML. 
    </heading> 
    <para> 
     Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
     tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
     quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 
     consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 
     cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 
     proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 
    </para> 
    <data>GBF79759</data> 
    <para> 
     Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
     tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 
     quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 
     consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 
     cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 
     proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 
    </para> 
</htmldoc> 

Questo è un semplice esempio (anche se l'XML esistente sono molto più complessa) di qualche markup XML, ho usato questo come esempio, perché ho un mix di markup che è separata (<para>'s & <data> è il primo esempio qui).

Dove ho cercato online, tutti hanno aggiunto i dati in modo non dinamico, individuando elementi e accodandoli, quello che desidero fare è dichiarare che ogni tag è nel documento XML come elemento HTML e quindi aggiungi tutto. Mi chiedo anche se questo è qualcosa che copre l'XSL? Dato che non ho molta conoscenza in XML/XSL quindi qualsiasi aiuto sarebbe molto apprezzato.

Ecco un esempio di mio attuale JS prova (modo non dinamica):

$.ajax({ 
    url: 'xml/' + data + '.xml', 
    type: 'GET', 
    dataType: 'xml' 
}).done(function(xml) { 
    console.log("success"); 
    $(xml).find('htmldoc').each(function() { 
     var heading = $(this).find('heading').text(), 
      para = $(this).find('para').text(); 

     $('#main > .content-wrapper > .container').append(
      // XML Structure 
      $('<h3>' + heading + '</h3>'), $('<p>' + para + '</p>') 
     ); 
    }); 
}).fail(function(jqXHR, textStatus, errorThrown) { 
    console.log("error", jqXHR, textStatus, errorThrown); 
}).always(function() { 
    console.log("complete"); 
}); 
+1

Vuoi dire che si desidera aggiungere direttamente tutte le XML dall'interno del ' 'elemento alla tua pagina? –

+0

Ciao, sì è esattamente quello che vorrei, per aggiungere letteralmente l'esatta struttura come invece di selezionarne alcune parti. –

+1

XSLT farebbe un buon lavoro, scriveresti un modello per ciascun tipo di elemento di input creando l'elemento di risultato HTML corrispondente, vedi http://xsltransform.net/6r5Gh3x per un rapido esempio, è facilmente adattabile come te puoi aggiungere altri template e devi solo assicurarti di mantenere l'elaborazione ricorsiva usando ''. –

risposta

0
$($.parseXML(xml)).find('htmldoc').each(function() { 
    var heading = $(this).find('heading').text(), 
     para = $(this).find('para').text(); 

    $('#main > .content-wrapper > .container').append(
     // XML Structure 
     $('<h3>'+heading+'</h3>'), $('<p>'+para+'</p>') 
    ); 
}); 

Fiddle

+1

Ci dispiace, potresti riassumere esattamente come questo è diverso dalla mia versione attuale? Sul tuo violino sta ancora aggiungendo il contenuto specificato piuttosto che tutto nell'XML nella stessa struttura ma non "selezionato come ciliegina". –