jQuery $().find를 사용하여 네임스페이스로 XML 구문 분석
-
02-07-2019 - |
문제
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();
당신이있는 경우 Chrome 또는 WebKit의 jQuery 선택기 문제 선택하지 않습니다
$(this).find('[nodeName=geo:lat]').text();
이런 식으로 모든 브라우저에서 작동합니다
제휴하지 않습니다 StackOverflow