2016-01-11 21 views
5

XML kullanıyorum ve bir proje için test ediyorum (JSON kullanamıyoruz, kullanmamız gereken XML var).jQuery AJAX XML aynı yapıda

Sorunum, XML'den görüntülenen verileri aynen görüntülendiği şekilde eklemektir.

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

bazı XML biçimlendirme, ben bir örnek olarak kullandı (varolan XML çok daha karmaşık olmasına rağmen) ben ayrılır biçimlendirme bir karışımını (<para>'s & <data> burada örnektir çünkü bu basit bir örnek).

Online aradığım yerde, herkes dinamik olmayan bir şekilde veri ekliyor, öğeleri seçiyor ve bunları ekliyor, ne yapmak istediğim XML etiketindeki her etiketin bir HTML öğesi olduğunu ve sonra herşeyi ekle. Ayrıca XSL'nin kapsadığı bir şey mi merak ediyorum? XML/XSL'de fazla bilgim olmadığı için, herhangi bir yardım büyük ölçüde takdir edilecektir. İşte

(dinamik olmayan bir şekilde) benim geçerli test JS bir örnektir:

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

Eğer direkt olarak içine gelen tüm XML eklemek istediğiniz anlamına mı ' Sayfanıza 'öğesi? –

+0

Merhaba, evet tam olarak istediğim şey, tam olarak yapının kesin kısımlarını kirazın belirli kısımlarını seçmek yerine tam olarak eklemektir. –

+1

XSLT bu konuda iyi bir iş çıkarır, ilgili HTML sonuç öğesini yaratan her giriş elemanı türü için bir şablon yazarsınız, hızlı bir örnek için http://xsltransform.net/6r5Gh3x adresine bakın, sizin için kolayca uyarlanabilir Daha fazla şablon ekleyebilir ve sadece 'kullanarak yinelemeli işlem yapmayı sürdürmeniz gerekir. –

cevap

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

Maalesef, bunun geçerli sürümümden farklı olduğunu tam olarak özetleyebilir misiniz? Keman üzerinde yine de XML'de aynı yapıda değil ama 'kirazdan alınacak' her şeyden ziyade belirtilen içeriği ekliyor. –