2011-10-14 2 views
4

XML 문자열을 JSON으로 변환하는 데 가장 적합한 javascript 함수/플러그인/라이브러리는 무엇입니까?XML 문자열을 JSON으로 변환하기위한 도구 (javascript)

도구 : http://www.thomasfrank.se/xml_to_json.html을 찾았지만 0으로 시작하는 문자열을 좋아하지 않습니다. 예 : 누군가 잘 작동 하나를 시도 : 005321

내 질문 2769 (:(쿨하지 않음)로 변환됩니다,

편집이 JSON에 XML을 변환하는 가장 좋은 자바 스크립트 기능/플러그인/라이브러리는 무엇인가?

+0

왜 그것에 대해 저자에 쓰기를 시도하지 않는입니까? – stivlo

+0

@stivlo - 페이지 상단에는 작성자가 사람들이 "보고 된 수많은 문제로 인해"다른 것을 사용하기를 원한다고 큰 메모가 있습니다. –

+0

해당 스크립트는 유효한 JSON을 생성하지 않습니다. – Pointy

답변

16

이 기능은 꽤 잘 날 위해 일했다 :

xmlToJson = function(xml) { 
    var obj = {}; 
    if (xml.nodeType == 1) {     
     if (xml.attributes.length > 0) { 
      obj["@attributes"] = {}; 
      for (var j = 0; j < xml.attributes.length; j++) { 
       var attribute = xml.attributes.item(j); 
       obj["@attributes"][attribute.nodeName] = attribute.nodeValue; 
      } 
     } 
    } else if (xml.nodeType == 3) { 
     obj = xml.nodeValue; 
    }    
    if (xml.hasChildNodes()) { 
     for (var i = 0; i < xml.childNodes.length; i++) { 
      var item = xml.childNodes.item(i); 
      var nodeName = item.nodeName; 
      if (typeof (obj[nodeName]) == "undefined") { 
       obj[nodeName] = xmlToJson(item); 
      } else { 
       if (typeof (obj[nodeName].push) == "undefined") { 
        var old = obj[nodeName]; 
        obj[nodeName] = []; 
        obj[nodeName].push(old); 
       } 
       obj[nodeName].push(xmlToJson(item)); 
      } 
     } 
    } 
    return obj; 
} 

구현 :

var jsonText = JSON.stringify(xmlToJson(xmlDoc)); // xmlDoc = xml dom document 
당신이 jQuery를 사용하고자하는 경우
+0

위대한 솔루션 !! 감사합니다 –

+0

대단히 반갑습니다. –

+0

편리한 개선 사항 : typeof (obj [nodeName] .length) == "undefined"를 typeof (obj [nodeName] .push) == "undefined"'로 변경하면 공백과 텍스트 요소가 부 풀리기를 멈 춥니 다. 태그 사이. – jpatokal

1

,이 :

http://www.fyneworks.com/jquery/xml-to-json/

$.get("http://jfcoder.com/test.xml.php", function(xml){ 
    var json = $.xml2json(xml); 
    $('pre').html(JSON.stringify(json)); // To show result in the browser 
}); 

는 사용 :

<nums> 
<num>00597</num> 
<num>0059</num> 
<num>5978</num> 
<num>5.978</num> 
</nums> 

출력 :

{"num":["00597","0059","5978","5.978"]} 
XML < => JSON에 대한3210

http://jfcoder.com/test.php

+0

이 라이브러리는 텍스트에 포함 된 태그를 잃습니다. '

Hello 굵게기울임 꼴

'는 "{"p ":"Helloand "}'가됩니다. – jpatokal

관련 문제