我正在尝试获取XML文档元素的内容,但该元素的名称中包含冒号。

此行适用于每个元素,但名称中包含冒号的元素:

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

我认为冒号需要逃脱。我该如何解决这个问题?

有帮助吗?

解决方案

使用反斜杠,它本身应该被转义,因此JavaScript不会吃它:

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

其他提示

这不仅仅是一个普通的元素名称。这是一个限定名称,这意味着它是一个专门引用命名空间中的元素类型的名称。元素类型名称为“lat”,命名空间前缀为“geo”。

目前,jQuery无法很好地处理命名空间,详见错误155

目前,作为一种解决方法,您应该只能使用本地名称选择这些元素:

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

如果必须区分具有相同本地名称的元素类型,则可以使用 filter()

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

编辑:我的错误,我的印象是补丁已经落地了。如果您还需要命名空间,请使用Adam对选择器的建议,以及 filter()

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

如果你有一个 jquery选择器问题与chrome或webkit 没有选择它尝试

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

这种方式适用于所有浏览器

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top