当前位置:  开发笔记 > 编程语言 > 正文

使用jQuery $().find解析带有命名空间的XML

如何解决《使用jQuery$().find解析带有命名空间的XML》经验,为你挑选了2个好方法。

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

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

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

我认为冒号需要逃脱.我该如何解决?



1> Adam Bellair..:

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

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


@Vaske,我在Chrome中使用最新版本的jQuery看到了同样的事情.在冒号为我工作后使用节点名称的后半部分.使用`.find("lat")`而不是`.find("geo \\:lat")`它对我有用.

2> Jim..:

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

现在,jQuery无法很好地处理命名空间,详见bug 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();

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有