使用jQuery $()。find分析具有名称空间的XML
时间:2020-03-06 14:40:39 来源:igfitidea点击:
我正在尝试获取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();
编辑:我的错,我的印象是补丁已经着陆。对选择器使用亚当的建议,如果我们也需要命名空间,则使用filter()
:
var NS = "http://example.com/whatever-the-namespace-is-for-geo"; $(this).find("geo\:lat").filter(function() { return this.namespaceURI == NS; }).text();
如果我们在chrome或者webkit上遇到jquery选择器问题而不选择它,请尝试
$(this).find('[nodeName=geo:lat]').text();
这样,它就可以在所有浏览器中使用