복붙노트

[JQUERY] 네임 스페이스와 XML 파싱을 위해 jQuery를 사용하는 방법

JQUERY

네임 스페이스와 XML 파싱을 위해 jQuery를 사용하는 방법

해결법


  1. 1.나는 그것을 얻었다.

    나는 그것을 얻었다.

    이 대장을 탈출 \\ 필요하다고 밝혀졌습니다.

    $.get(xmlPath, {}, function(xml) {
        $("rs\\:data", xml).find("z\\:row").each(function(i) {
            alert("found zrow");
        });
    }, "xml");
    

    리치는 지적 :

    더 나은 솔루션은 모두 "현대"브라우저에서 탈출하고 작업이 필요하지 않습니다 :

    .find("[nodeName=z:row]")
    

  2. 2.나는 플러그인과 행운과 솔루션의 모든 종류의 약이 읽기에 몇 시간을 보냈습니다.

    나는 플러그인과 행운과 솔루션의 모든 종류의 약이 읽기에 몇 시간을 보냈습니다.

    ArnisAndy이 대답이 제공하는 jQuery를 토론, 링크를 게시하고 내가 확인할 수있는 크롬 (v18.0)에서 나를 위해이 작품, 파이어 폭스 (V11.0), IE (v9.08)와 사파리 (V5.1.5 ) jQuery를 (v1.7.2)를 사용.

    나는 내용이 <내용 : 코드>라는 워드 프레스 피드를 긁어하려고 이것은 나를 위해 일한 것입니다 :

    content: $this.find("content\\:encoded, encoded").text()
    

  3. 3.당신이 JQuery와 1.5을 사용하는 경우 당신은 그것을 작동하게하기 위해 노드 선택 속성 값 주위에 따옴표를 추가해야합니다 :

    당신이 JQuery와 1.5을 사용하는 경우 당신은 그것을 작동하게하기 위해 노드 선택 속성 값 주위에 따옴표를 추가해야합니다 :

    .find('[nodeName="z:row"]')
    

  4. 4.위의 대답은 올바른 것 같다 있지만, 그것은 웹킷 브라우저 (사파리, 크롬)에서 작동하지 않습니다. 내가 믿는 더 나은 솔루션은 다음과 같습니다

    위의 대답은 올바른 것 같다 있지만, 그것은 웹킷 브라우저 (사파리, 크롬)에서 작동하지 않습니다. 내가 믿는 더 나은 솔루션은 다음과 같습니다

    .find("[nodeName=z:myRow, myRow]")    
    

  5. 5.경우에는 다른 사람의 요구는 일반 자바 스크립트와 jQuery를하지 않고이 작업을 수행하고, 구글 크롬 (웹킷), 이것은 내가 연구와 테스트를 많이 후 작업에 얻을 수있는 유일한 방법입니다.

    경우에는 다른 사람의 요구는 일반 자바 스크립트와 jQuery를하지 않고이 작업을 수행하고, 구글 크롬 (웹킷), 이것은 내가 연구와 테스트를 많이 후 작업에 얻을 수있는 유일한 방법입니다.

    즉, 다음 노드를 검색하기위한 작동합니다 : <접두사 : 이름을>. 접두사 또는 네임 스페이스를 생략 볼 수 있습니다, 그것은 일치로 서로 다른 네임 스페이스를 가진 요소는 태그 이름은 이름입니다 제공. 그러나 희망이 당신을 위해 문제가되지 않습니다.

    이 중 어느 것도 (나는 Google 크롬 확장 프로그램을 개발하고) 나를 위해 일한 :

    getElementsByTagNameNS ( "접두어", "이름")

    getElementsByTagName ( "접두사 : 이름")

    getElementsByTagName ( "접두사 \\ : 이름")

    getElementsByTagName ( "이름")

    편집하다


  6. 6.작업 위의 솔루션 없음이 아니라. 나는이를 발견하고 속도를 향상되었습니다. 단지 마법처럼 일이 추가 :

    작업 위의 솔루션 없음이 아니라. 나는이를 발견하고 속도를 향상되었습니다. 단지 마법처럼 일이 추가 :

    $.fn.filterNode = function(name) {
        return this.find('*').filter(function() {
           return this.nodeName === name;
        });
    };
    

    용법:

    var ineedthatelementwiththepsuedo = $('someparentelement').filterNode('dc:creator');
    

    출처 : http://www.steveworkman.com/html5-2/javascript/2011/improving-javascript-xml-node-finding-performance-by-2000/


  7. 7.은 "\\"탈출이 절대 안전한 및 간단하지 않다

    은 "\\"탈출이 절대 안전한 및 간단하지 않다

    .find('[nodeName="z:row"]')
    

    방법은 JQuery와 1.7의 깨진 된 것으로 보인다. 자바 스크립트 XML 노드 찾기 성능 향상 : 여기 필터 기능을 사용하여 1.7에 대한 해결책을 찾을 수 있었다


  8. 8.jQuery를 1.7로 네임 스페이스 요소를 찾기위한 해결 방안 일부 문제가 있다고 지적 그것의 가치. 자세한 내용은 다음 링크를 참조하십시오 :

    jQuery를 1.7로 네임 스페이스 요소를 찾기위한 해결 방안 일부 문제가 있다고 지적 그것의 가치. 자세한 내용은 다음 링크를 참조하십시오 :


  9. 9.주석에서 찾을 솔루션 : jQuery를 $ ()를 사용하여 네임 스페이스와 구문 분석 XML 찾을 수 있습니다.

    주석에서 찾을 솔루션 : jQuery를 $ ()를 사용하여 네임 스페이스와 구문 분석 XML 찾을 수 있습니다.

    내 설정 :

    샘플 XML (구글 연락처 API 니펫) :

    <entry>
      <id>http://www.google.com/m8/feeds/contacts/mstefanow%40gmail.com/base/0</id>
      <gd:email rel="http://schemas.google.com/g/2005#other" address="email@example.com" primary="true"/>
    </entry>
    

    코드를 구문 분석 :

    var xmlDoc = $.parseXML( xml );
    var $xml = $( xmlDoc );
    var $emailNode = $xml.find( "email" );
    $("#email").html($emailNode.attr("address"));
    

  10. 10.jQuery를 1.7은 다음과 같은 작동하지 않습니다 :

    jQuery를 1.7은 다음과 같은 작동하지 않습니다 :

    $(xml).find("[nodeName=a:IndexField2]")
    

    내가 크롬, 파이어 폭스와 IE에서 작동 거지 하나 개의 솔루션은 하나의 방법은 크롬에서 다른 IE에서 작동하고 있다는 사실에 근거 크롬에서 작업, IE 및 선택기에서 작동하는 사용 선택기이다 :

    $(xml).find('a\\\\:IndexField2, IndexField2')
    

    IE에서 네임 스페이스를 (파이어 폭스와 IE는 네임 스페이스를 필요로)를 사용하여이 반환 노드 및 크롬에서 선택 반환 노드는 비 네임 스페이스 선택에 따라. 나는 사파리에서이 테스트를하지 않은,하지만 크롬에서 일하고 있기 때문에 그것을 작동합니다.


  11. 11.(나는 PHP는 프록시를 사용하기 때문에) 내 솔루션을 대체하는 것입니다 : 네임 스페이스를 _ ... 그래서 더 이상 공간 문제로 ;-)

    (나는 PHP는 프록시를 사용하기 때문에) 내 솔루션을 대체하는 것입니다 : 네임 스페이스를 _ ... 그래서 더 이상 공간 문제로 ;-)

    간단하게!


  12. 12.원래 답 : 요소의 속성을 얻을 수있는 방법의 jQuery XML 파싱

    원래 답 : 요소의 속성을 얻을 수있는 방법의 jQuery XML 파싱

    여기에 성공적으로 크롬의 값을 얻는 방법에 대한 예입니다 ..

     item.description = jQuery(this).find("[nodeName=itunes\\:summary]").eq(0).text();
    

  13. 13.나를 위해, 2016의 jQuery를 1.12.0 다음과 같은 구문 작업을 시작 현재로 :

    나를 위해, 2016의 jQuery를 1.12.0 다음과 같은 구문 작업을 시작 현재로 :

    구문 .find ( "[여기서 nodeName = Z : 행]") 브라우저 중 하나가 상술 한 작동하지 않는다. 나는 크롬에 네임 스페이스를 적용 할 수있는 방법을 찾을 수 없습니다.

    위에서 언급 한 모든 브라우저에서 모두 함께 다음 구문 작품 퍼팅 : .find ( "행 Z \\ : 행")


  14. 14.(가) 완전히 때문에 경우 문제 중 하나가 작동하지 않습니다 플러그인 제안 (여기서 nodeName은 속성으로, 모두 대문자 때때로) - 위에서 언급 한 바와 같이, jQuery를 현재 브라우저 / 버전 위의 솔루션에 문제가 있습니다. 그래서, 나는 다음과 같은 빠른 기능을 썼다 :

    (가) 완전히 때문에 경우 문제 중 하나가 작동하지 않습니다 플러그인 제안 (여기서 nodeName은 속성으로, 모두 대문자 때때로) - 위에서 언급 한 바와 같이, jQuery를 현재 브라우저 / 버전 위의 솔루션에 문제가 있습니다. 그래서, 나는 다음과 같은 빠른 기능을 썼다 :

    $.findNS = function (o, nodeName)
    {
        return o.children().filter(function ()
        {
            if (this.nodeName)
                return this.nodeName.toUpperCase() == nodeName.toUpperCase();
            else
                return false;
        });
    };
    

    사용 예제 :

    $.findNS($(xml), 'x:row');
    

  15. 15.함유량: $ this.find ( "내용 \\ : 인코딩, 인코딩"). 텍스트 ()

    함유량: $ this.find ( "내용 \\ : 인코딩, 인코딩"). 텍스트 ()

    완벽한 솔루션입니다 ...


  16. 16.선택기에서 네임 스페이스와 작업에 대한 jQuery 플러그인 JQuery와-의 xmlns가있다.

    선택기에서 네임 스페이스와 작업에 대한 jQuery 플러그인 JQuery와-의 xmlns가있다.


  17. 17.나는 XML을 구문 분석 JQuery와 사용에 대한 모든 문서를 보지 못했다. JQuery와는 일반적으로 HTML 문서를 검색하기 위해 브라우저의 DOM을 사용하여, 나는 그것이 HTML 자체를 읽고 생각하지 않는다.

    나는 XML을 구문 분석 JQuery와 사용에 대한 모든 문서를 보지 못했다. JQuery와는 일반적으로 HTML 문서를 검색하기 위해 브라우저의 DOM을 사용하여, 나는 그것이 HTML 자체를 읽고 생각하지 않는다.

    당신은 아마 자바 스크립트 자체에서 XML 처리에 내장 봐야한다.

    http://www.webreference.com/programming/javascript/definitive2/


  18. 18.단지 빈 문자열 네임 스페이스를 교체했다. 나를 위해 잘 작동합니다. 파이어 폭스, IE, 크롬 : 브라우저에서 테스트 솔루션

    단지 빈 문자열 네임 스페이스를 교체했다. 나를 위해 잘 작동합니다. 파이어 폭스, IE, 크롬 : 브라우저에서 테스트 솔루션

    내 작업은 읽고 셰어 EXCEL REST API를 통해 엑셀 파일을 구문 분석하는 것이었다. 네임 스페이스 다음 XML 응답은 "X"로 태그가 포함되어 있습니다.

    나는 빈 문자열로 XML의 네임 스페이스를 교체하기로 결정했습니다. 이 방식으로 작동합니다 : 는 XML 응답에서 관심있는 노드를 가져옵니다 (1) 문자열에 선택한 노드의 XML-응답 (문서)로 변환합니다 빈 문자열 네임 스페이스를 교체합니다 XML-문서 3. 변환 문자열 다시

    여기에 코드 개요를 참조하십시오 ->

    function processXMLResponse)(xData)
    {
      var xml = TOOLS.convertXMLToString("", "",$(xData).find("entry content")[0]);
      xml = xml.replace(/x:/g, "");            // replace all occurences of namespace
      xData =  TOOLS.createXMLDocument(xml);   // convert string back to XML
    }
    

    XML를 문자열로 변환하는 데 여기에 해결책을 찾을 수 : http://www.sencha.com/forum/showthread.php?34553-Convert-DOM-XML-Document-to-string


  19. 19.또는, 당신은 당신의 프로젝트에 빠른 XML 파서를 사용하여 JS / JSON 객체로 XML 데이터를 변환 할 수 있습니다. 그럼 당신은 객체의 속성으로 사용할 수 있습니다. 그것은 JQuery와 또는 다른 라이브러리를 사용하지 않는 그러나 당신의 목적을 해결할 수 있습니다.

    또는, 당신은 당신의 프로젝트에 빠른 XML 파서를 사용하여 JS / JSON 객체로 XML 데이터를 변환 할 수 있습니다. 그럼 당신은 객체의 속성으로 사용할 수 있습니다. 그것은 JQuery와 또는 다른 라이브러리를 사용하지 않는 그러나 당신의 목적을 해결할 수 있습니다.

    VAR XMLDATA = '' + ' " + '' + ' ' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' + '' VAR jsObj = parser.parse (XMLDATA {attrPrefix ""ignoreTextNodeAttr : FALSE}); (JSON.stringify (jsObj.xml를 [ "RS : 데이터"[ "Z : 행"] [0], NULL, 4) + "로
    ") document.write를; (JSON.stringify (jsObj.xml를 [ "RS : 데이터"[ "Z : 행의"[1], NULL, 4) + "로
    ") document.write를; (JSON.stringify (jsObj.xml를 [ "RS : 데이터"[ "Z : 행의"[2], NULL, 4) + "로
    ") document.write를; <스크립트 SRC = "https://cdnjs.cloudflare.com/ajax/libs/fast-xml-parser/2.9.2/parser.min.js">

    JS / JSON 개체를 구문 분석하는 동안 네임 스페이스를 무시할 수 있습니다. 이 경우 직접 jsObj.xml.data.row으로 액세스 할 수 있습니다.

    for(var i=0; i< jsObj.xml.data.row.length; i++){
      console.log(jsObj.xml.data.row[i]);
    }
    

    면책 조항 : 나는 빠른 XML 파서를 만들었습니다.


  20. 20.웹킷 브라우저의 경우, 당신은 단지 콜론을 남길 수 있습니다. 그래서 <미디어 : 컨텐츠> 찾을 예를 들어, RSS 피드, 당신은이 작업을 수행 할 수 있습니다 :

    웹킷 브라우저의 경우, 당신은 단지 콜론을 남길 수 있습니다. 그래서 <미디어 : 컨텐츠> 찾을 예를 들어, RSS 피드, 당신은이 작업을 수행 할 수 있습니다 :

    $(this).find("content");
    
  21. from https://stackoverflow.com/questions/853740/how-to-use-jquery-for-xml-parsing-with-namespaces by cc-by-sa and MIT license