2011-03-28 3 views
1

나는 ajax에 새로운입니다. jquery를 통해 정상적인 xml 구문 분석을 수행했지만 네임 스페이스가 작동하는 XML을 가져올 수 없습니다. 나는 웹을 수색하고 나가 찾아낸 몇몇 자원이 아주있다. 여기에 stackoverflow에 게시물이 있지만 그것은 나를 위해 작동하지 않습니다. 여기 xml 네임 스페이스를 jQuery로 구문 분석합니다. 도움이 필요하다!

jQuery XML parsing with namespaces

XML 파일의 일부이다. xml 데이터에서 연도 번호가 필요하다고 가정합니다. 나는 그것을 어떻게 얻을 것인가?

<aws:sunset> 
       <aws:year number="2011" /> 
       <aws:month number="3" text="March" abbrv="Mar" /> 
       <aws:day number="27" text="Sunday" abbrv="Sun" /> 
       <aws:hour number="7" hour-24="19" /> 
       <aws:minute number="10" /> 
       <aws:second number="28" /> 
       <aws:am-pm abbrv="PM" /> 
       <aws:time-zone offset="-5" text="Central Daylight Time (USA)" abbrv="CDT" /> 
    </aws:sunset> 

답장을 기다리는 중입니다. 감사! 당신이 대장에게

예를 탈출 이중 백 슬래시를 사용할 때

답변

6

가능하면 특히 외부 서비스를 다루는 경우 실제 네임 스페이스 인식 XML 파서를 사용하는 것이 좋습니다. 예를 들어 이름 공간 접두사가 시간에 따라 일정하게 유지된다는 보장은 없습니다.

대부분의 JavaScript DOM 파서에는 getElementsByTagNameNS()이 포함되어 실제 네임 스페이스가있는 요소를 찾을 수 있습니다.

데이터가 xml_file 인 것으로 가정하면 프로세스가 다음과 같이 보일 수 있습니다.

var namespace = 'http://aws.example.com/'; 
var parser = new DOMParser(); // Webkit, IE has its own 
var xml = parser.parseFromString(xml_file, "text/xml");  
var year = xml.getElementsByTagNameNS(namespace, 'year')[0]; // returns the first aws:year element 
var year_value = year.getAttribute('number'); 
+0

안녕하세요, http://aws.example.com/에 대한 URL은 무엇입니까? – Sisir

+1

이것은 XML 네임 스페이스 예제 일뿐입니다. 내가 포함되지 않았기 때문에 위에 붙여 넣은 XML 샘플의 실제 네임 스페이스를 모른다. –

0

당신은 DOM을 구문 분석 할 수 있습니다.

$("aws\\:year").attr('number') 

편집 :

솔루션은 위의 웹킷 브라우저에서 작동하지 않습니다. 더 나은 해결책

$("[nodeName=aws:year]").attr('number') 

이 내용은 확인하지 않았습니다.

관련 문제