2016-01-11 74 views
5

Jestem nowy w używaniu XML i testuję go dla projektu (nie możemy używać JSON, mamy już istniejący XML, który musi być użyty).jQuery AJAX XML w tej samej strukturze

Moim problemem jest to, że chcę dołączyć dane z pliku XML w dokładnie takiej samej strukturze, w jakiej jest wyświetlany.

<?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> 

To jest prosty przykład (choć istniejący XML są znacznie bardziej skomplikowane) jakiegoś znaczników XML, użyłem to jako przykład, ponieważ mam mieszankę znaczników, który jest oddzielony (<para>'s & <data> jest najlepszym przykładem tutaj).

Tam, gdzie szukałem w Internecie, każdy ma dołączone dane w sposób niedynamiczny, wybierając elementy i dołączając je, co chcę zrobić, to określić, co każdy znacznik jest w dokumencie XML jako element HTML, a następnie dołącz wszystko. Zastanawiam się również, czy to jest coś, co obejmuje XSL? Ponieważ nie mam zbyt wiele wiedzy w XML/XSL, więc każda pomoc byłaby bardzo doceniana.

Oto przykład z mojego obecnego testu JS (non-dynamiczny sposób):

$.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

Czy to znaczy, że chcesz, aby bezpośrednio dołączyć wszystkie XML od wewnątrz ' 'element do strony? –

+0

Witam, tak, to jest dokładnie to, co chciałbym, aby dosłownie dopisać dokładną strukturę, a nie wiśnia, wybierając niektóre jej części. –

+1

XSLT wykonałby dobrą robotę, napisałbyś szablon dla każdego z typów elementów wejściowych, tworząc odpowiedni element wyniku HTML, patrz http://xsltransform.net/6r5Gh3x dla szybkiego przykładu, można go łatwo dostosować do własnych potrzeb może dodawać kolejne szablony i po prostu upewnij się, że kontynuujesz przetwarzanie rekursywne za pomocą ''. –

Odpowiedz

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

Przepraszam, czy mógłbyś podsumować dokładnie, jak to się różni od mojej obecnej wersji? Na twoim skrzypcach wciąż dołącza określoną treść, a nie wszystko w XML w tej samej strukturze, ale nie "wiśnie". –