Parsen von verschachtelten xml mit jQuery (Kinder-Elemente)
Ersten ab hier ist die Struktur, die ich bin zu gehen für:
<ul>
<li>
<h3>State Name 1</h3>
<ul>
<li>
<a href="storeurl" id="storeid">storename</a>
</li>
<li>
<a href="storeurl" id="storeid">storename2</a>
</li>
</ul>
</li>
<li>
<h3>State Name 2</h3>
<ul>
<li>
<a href="storeurl" id="storeid">storename</a>
</li>
</ul>
</li>
</ul>
Hier ist, wie meine xml-Datei strukturiert ist:
<storeList>
<state>
<stateName>Maine</stateName>
<store>
<storeName>first store</storeName>
<storeID>store1</storeID>
<storeURL>http://www.url.com</storeURL>
</store>
<store>
<storeName>second store</storeName>
<storeID>store2</storeID>
<storeURL>http://www.url.com</storeURL>
</store>
<store>
<storeName>third store</storeName>
<storeID>store3</storeID>
<storeURL>http://www.url.com</storeURL>
</store>
</state>
<state>
<stateName>Connecticut</stateName>
<store>
<storeName>first store</storeName>
<storeID>store4</storeID>
<storeURL>http://www.url.com</storeURL>
</store>
</state>
</storeList>
Ich bin mir nicht sicher, wie eine Schleife durch die Elemente, um die verschachtelte Liste.
Ich weiß, wie man schreiben von xml-Elementen auf html -, aber ich habe nicht getan, diese Art der verschachtelten Liste vor.
Habe ich versucht, oben zu brechen das script eine Schleife durch die verschiedenen Elemente, aber das hat nicht funktioniert und ich weiß, dass meine Struktur ist falsch für den zweiten Teil. Ich nehme an, ich werde zu tun haben, irgendeine Art von äußeren oder inneren umwickeln des ul-elements?
$(document).ready(function () {
$.ajax({
type: "GET",
url: "xml/storeList.xml",
dataType: "xml",
success: xmlParser
});
});
function xmlParser(xml) {
$(xml).find("state").each(function () {
$(".storeListContent").append('<ul><li><h3>' +
$(this).find("stateName").text() +
'</h3></li></ul>');
});
/*$(xml).find("store").each(function () {
$(".storeListContent ul li").append('<ul><li>' +
'<a class="storeInactive" id="' +
$(this).find("storeID").text() +
'" href="' +
$(this).find("stateURL").text() +
'">' +
$(this).find("stateName").text() +
'</a>' +
'</li></ul>'
);
});*/
}
Arbeiten:
Musste ändern Sie den Datentyp html statt xml.
Wer noch einen Einblick in, warum das funktioniert?
Nein, zu müssen, es laufen alle frontend
InformationsquelleAutor Jason | 2011-12-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist meine aktuelle code.
Hatte zum ändern der
dataType
zu"html"
.Nicht sicher, warum das funktioniert.
InformationsquelleAutor Jason
Vorausgesetzt, Ihr XML-befindet sich in einer Datei namens "store.xml"
AUSGABE:
BEARBEITEN
Für Ihren Hinweis habe ich Hinzugefügt, ganze html, was ich geschrieben habe, auf meiner Maschine, die ist in Ordnung.
HTML-Datei:
Es funktioniert und habe es getestet auf firefox & IE, ich denke, Sie sind etwas fehlt. Haben Sie Ihre xml-Datei und html im selben Ordner? Es sollte so etwas wie store.xml und store.html
meine xml ist in xml/storelist.xml und ich hab eingestellt Sie Ihren code entsprechend. Ich legte das Skript inline-wo ich will, die Ausgabe, und es nicht wieder alles für mich.
können Sie mir sagen, auf welche browser testing & auch lassen Sie mich wissen, wie Sie zusammengeführt werden, ist der code? Ich vermute immer noch Ihr fehlen etwas, was...
'$(document).ready(function () { $.get('xml/storeList.xml', null, function (data) { document.write("<ul>"); $(data).find('Staat').each( function(){ document.write("<li><h3>" + $(this).finden("stateName").text() + "</h3><ul>"); $(this).finden("store").each(function(i,e){ Dokument.write("<li><a class='storeInactive' id='" + $(e).finden("storeID").text() + "' href='" + $(e).finden("storeURL").text() + "'>" + $(e).finden("storeName").text() + "</a></li>"); }); Dokument.write("</ul></li>"); }); Dokument.write("</ul>"); }, 'xml'); }); '
InformationsquelleAutor Siva Charan