Mam problem z odczytaniem XML z jQuery. Mogę załadować plik XML, ale nie mogę odczytać jego tagów, chciałem najpierw przeczytać „menuitem”, a następnie przeczytać jego atrybuty, mój kod:
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
cache: false,
url: baseUrl + "/sitefinity/services/tafesa/TAFEpagedata.svc/Mainmenu",
data: {},
dataType: "xml",
success: function (data, textStatus, jqXHR) {
console.log(data);
$(data).find("menuitem").each(function () {
htmlString = htmlString + writeToplevelNav($(this).attr("title"), $(this).attr("url"),$(this));
});
A to jest mój XML:
<GetMainNavResponse xmlns="http://tempuri.org/">
<GetMainNavResult>
<mainMenu>
<mainitem title="Courses" url="~/courses">
<subitem title="Primary Industries @amp; Science" url="~/courses/primary-ind-science">
<item title="Agriculture" url="~/courses/primary-ind-science/agriculture"/>
<item title="Animal Care @amp; Veterinary Nursing" url="~/courses/primary-ind-science/animal-care-veterinary-nursing"/>
<item title="Aquaculture" url="~/courses/primary-ind-science/aquaculture"/>
<item title="Conservation @amp; Land Management" url="~/courses/primary-ind-science/conservation-land-management"/>
<item title="Horticulture" url="~/courses/primary-ind-science/horticulture"/>
<item title="Science" url="~/courses/primary-ind-science/laboratory-technology"/>
</subitem>
</mainitem>
</mainMenu>
</GetMainNavResult>
</GetMainNavResponse>
Czy ktoś może mi w tym pomóc, wielkie dzięki!
Odpowiedzi:
0 dla odpowiedzi № 1Problem polega na tym, że w opublikowanym pliku XML nie ma elementu o nazwie menuit, jeśli zmienisz kod na:
$(data).find("mainitem")
Otrzymasz pierwszy element tytułowy Kursy i adres URL / kursy
Następnie dla tego głównego mainMenu myślę, że chciałbyś uzyskać jego podelementy poprzez:
$(data).find("mainitem").each(function () {
$(this).find("subitem").each(function() {
// Do some processing with subitem
});
// Do some processing with mainitem as well
});
A następnie elementy podelementów:
$(data).find("mainitem").each(function () {
$(this).find("subitem").each(function () {
$(this).find("item").each(function () {
// Process subitem"s items
});
// Do some processing with subitem as well
});
// Do some processing with mainitem as well
});
Stworzyłem tutaj projekt github z rozwiązaniem pokazującym tę technikę: https://github.com/davethomas11/stackoverflow_Q_39502601
Hostowany przykład: https://www.daveanthonythomas.com/remote/so39502601/