Comment interroger une chaîne de caractères XML via DOM en jQuery
Je voudrais prendre une corde et de le traiter comme XML. Alors je vais être capable de faire une requête avec le DOM via jQuery.trouver. Tout fonctionnait bien sous Firefox, mais j'ai réalisé que cela ne fonctionne pas dans IE.
Je suis en train de faire ceci:
var t = "<div><outer><inner>abc</inner><inner>def</inner></outer></div>";
alert("[" + $(t).find("outer").html() + "]");
Dans Firefox 3, il imprime:
[<inner>abc</inner><inner>def</inner>]
Dans IE 7 il imprime:
[]
Aucune solution de contournement pour obtenir que cela fonctionne sur tous les navigateurs?
Grâce.
Est-ce le XML de votre aide, il semble contenir des erreurs de syntaxe.
Oups. Je n'ai pas de match de balises XML. Ce n'est pas grave. La question est toujours debout.
Je les ai trouvé les balises dans le code exemple. Maintenant, c'est plus lisible. Des idées?
J'ai la réponse maintenant. Mais chaque fois que je poste, il ne s'affiche pas. Des idées?
Oups. Je n'ai pas de match de balises XML. Ce n'est pas grave. La question est toujours debout.
Je les ai trouvé les balises dans le code exemple. Maintenant, c'est plus lisible. Des idées?
J'ai la réponse maintenant. Mais chaque fois que je poste, il ne s'affiche pas. Des idées?
OriginalL'auteur Jono | 2009-05-20
Vous devez vous connecter pour publier un commentaire.
Il y a 2 façons d'aborder cette.
Si vous cochez le plugin source, il utilise à son tour objet ActiveX pour convertir la chaîne de caractères xml xml de l'objet.
OriginalL'auteur Jose Basilio
Serait-il possible de stocker le XML en JSON (je suppose qu'il serait)? Par exemple, en PHP, vous pouvez convertir du XML en un Tableau ou un Objet, puis les convertir en JSON avec
json_encode
. Vous pouvez ensuite l'écho que comme une variable javascript comme ceci:En PHP:
Et maintenant, quand vous avez besoin d'accéder à ces données, vous pouvez juste obtenir de la sorte:
J'espère que tout cela fait sens. Au moins vous n'aurez pas à vous soucier de XML plus sur le côté client. Bien sûr, si vous devez absolument, j'ai trouvé que ce qui a fonctionné pour moi dans le passé:
Modifier
J'ai modifié mon code pour utiliser le XML que vous fournissez--vous ne savez pas où j'ai mélangé là-haut (il doit l'ai attrapé le bout de code de quelqu'un d'autre réponse de l'accident). Vous devriez vraiment donner ma première suggestion d'un coup--il devrait fonctionner.
Oh ya, oups... haha, je n'ai pas mis la totalité des données XML dans la chaîne. C'est trop mauvais au sujet de l'IE problème. Je me demande si il a essayé ma méthode JSON. Il devrait fonctionner comme prévu.
OriginalL'auteur KyleFarris
Mettre la chaîne XML dans une variable Javascript:
Maintenant, vous pouvez analyser le XML en parcourant chaque client de nœuds:
OriginalL'auteur Sheikh Ali
Tout d'abord, le jQuery constructeur de HTML pas le XML... cela étant dit, votre XML peuvent travailler - mais ça dépend de beaucoup de navigateur comportement dépendant. Aussi, vous pouvez avoir plus de succès en ajoutant le nouvellement créé éléments d'un élément masqué sur la page quelque part, et puis d'essayer de l'interroger:
OriginalL'auteur Goyuix
En Javascript pour le Sélénium lecture de fichier XML dans le navigateur:
OriginalL'auteur Appeloappelo
Avec chaîne xml dans ie, vous devez utiliser .filtre qu'il ne veut pas reconnaître le nœud xml arbre.
Essayer cette dans ie8 avec le débogueur visible pour obtenir la sortie de la console.
OriginalL'auteur redsquare
Donc, qu'au lieu de stocker le dataset XML dans les DOM, le convertir en un tableau HTML et de le rendre invisible. Cela devrait résoudre le jQuery problèmes... au moins le navigateur de questions spécifiques. Puis de retour au travail sur l'amélioration de la sélecteurs.
Juste pour info, vous pouvez imbriquer des tableaux... de toute façon si je bang sur un problème trop longtemps et il n'est tout simplement pas aller n'importe où ou il est trop complexe... cela signifie en général je vais sur le mauvais chemin. Je pense que vous serait probablement mieux d'utiliser JSON pour sérialiser votre structure et peut-être quelque chose comme google gears pour persister sur le client - si c'est disponible.
Oui. Je suis en train de travailler sur le JSON solution. Je suis curieux de savoir ce que l'on entend par référence à google gears.
Juste que les vitesses peuvent persister les données sur le chargement de la page, de sorte que vous n'avez pas à les envoyer à travers le fil à chaque requête.
OriginalL'auteur Goyuix
Ça fait un moment, mais je viens de réaliser que j'ai oublié de le poster comment j'ai résolu le problème avec vos idées.
J'ai besoin d'un tout côté client de base de données (pas de PHP).
J'ai créé un div avec un commentaire HTML en contenant le XML. Je analysé le commentaire HTML avec ce et puis je converti le fichier XML en JSON avec cette.
Vous pouvez voir ma méthode en action ici:
http://wesculpt.net/art.html
Peut-être que je devrais tourner cette méthode dans un plugin jQuery.
Merci à tous pour votre aide tout le monde.
OriginalL'auteur Jono