/ / Czytanie xml przy użyciu jQuery nie działa - jquery, ajax, xml

Czytanie xml przy użyciu jQuery nie działa - jquery, ajax, xml

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 № 1

Problem 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/