Domanda

Sto cercando di ottenere il contenuto di un elemento del documento XML, ma l'elemento ha due punti nel suo nome.

Questa riga funziona per ogni elemento tranne quelli con i due punti nel nome:

$(this).find("geo:lat").text();

Suppongo che i due punti debbano sfuggire. Come posso risolvere questo problema?

È stato utile?

Soluzione

Usa una barra rovesciata, che deve essere salvata in modo che JavaScript non lo mangi:

$(this).find("geo\\:lat").text();

Altri suggerimenti

Questo non è solo un normale nome di elemento. Questo è un nome qualificato, il che significa che è un nome che si riferisce specificamente a un tipo di elemento all'interno di uno spazio dei nomi. Il nome del tipo di elemento è 'lat' e il prefisso dello spazio dei nomi è 'geo'.

Al momento, jQuery non riesce a gestire molto bene gli spazi dei nomi, vedi bug 155 per i dettagli .

In questo momento, come soluzione alternativa, dovresti essere in grado di selezionare questi elementi con solo il nome locale:

$(this).find("lat").text();

Se devi distinguere tra tipi di elementi con lo stesso nome locale, puoi usare filter () :

var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("lat").filter(function() { return this.namespaceURI == NS; }).text();

Modifica: errore mio, avevo l'impressione che la patch fosse già atterrata. Usa il suggerimento di Adam per il selettore e filter () se hai bisogno anche dello spazio dei nomi:

var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("geo\\:lat").filter(function() { return this.namespaceURI == NS; }).text();

se hai un problema con il selettore jquery con chrome o webkit non selezionandolo prova

$(this).find('[nodeName=geo:lat]').text();

in questo modo funziona in tutti i browser

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top