/ / La lecture de xml à l'aide de jQuery ne fonctionne pas - jquery, ajax, xml

La lecture de xml à l'aide de jQuery ne fonctionne pas - jquery, ajax, xml

J'ai un problème en lisant XML à partir de jQuery. Je peux charger le XML, mais je ne peux pas lire ses balises, je voulais d'abord lire le "menuitem" puis lire ses attributs, mon code

$.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));
});

Et voici mon 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>

Est-ce que n'importe qui peut m'aider avec ceci, merci beaucoup!

Réponses:

0 pour la réponse № 1

Le problème est qu’il n’y a pas d’élément appelé menuitem dans le xml que vous avez posté si vous changez votre code en:

$(data).find("mainitem")

Vous obtiendrez le premier élément, à savoir titre Courses et url ~ / courses

Par la suite, pour ce menu principal, je "pensais que vous souhaitiez également le recevoir" via:

$(data).find("mainitem").each(function () {
$(this).find("subitem").each(function() {
// Do some processing with subitem
});

// Do some processing with mainitem as well
});

Et puis les éléments de sous-éléments:

$(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
});

J'ai "créé ici un projet github avec une solution montrant cette technique: https://github.com/davethomas11/stackoverflow_Q_39502601

Exemple hébergé: https://www.daveanthonythomas.com/remote/so39502601/