Pergunta

Estou tentando obter o conteúdo de um elemento de documento XML, mas o elemento tem um cólon em seu nome.

Esta linha funciona para todos os elementos, mas aqueles com um cólon no nome:

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

Suponho que o cólon precisa escapar. Como faço para corrigir isso?

Foi útil?

Solução

Use uma barra de barriga, que por si só deve ser escapada para que o JavaScript não o coma:

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

Outras dicas

Isso não é apenas um nome de elemento comum. Esse é um nome qualificado, o que significa que é um nome que se refere especificamente a um tipo de elemento dentro de um espaço para nome. O nome do tipo de elemento é 'lat' e o prefixo do espaço para nome é 'geo'.

No momento, o jQuery não pode lidar com os nomes muito bem, veja Bug 155 para detalhes.

No momento, como uma solução alternativa, você poderá selecionar estes elementos apenas com o nome local:

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

Se você precisar distinguir entre tipos de elementos com o mesmo nome local, pode usar filter():

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

Editar: Meu erro, tive a impressão de que o patch já havia pousado. Use a sugestão de Adam para o seletor e filter() Se você precisar do nome de nome também:

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

se você tem um Problema de seletor de jQuery com Chrome ou Webkit não selecionando, tente

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

Dessa forma, funciona em todos os navegadores

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top