2014-07-11 2 views
0

xml을 json으로 변환하는 간단한 메서드를 만들려고합니다. 프로토 타입을 사용하는 방법을 배우려고하고 있기 때문에 나는 javascript의 프로토 타입을 사용하여이를 수행하려고합니다. myXmlString.toJson();프로토 타입 메서드에서 올바른 경우에도 자바 스크립트 프로토 타입 반환 값이 정의되지 않았습니다.

xml 문자열이 변환되는 것을 보여주는 아래의 스크립트가 있습니다. json 개체를 메서드 내에서 그냥 괜찮아요,하지만 내가 정의되지 않은 메서드를 호출하려고하면.

+1

처럼 함수에서 값을 반환해야 대신 내장 된 파서를 사용해야합니다. 최신 브라우저에는 [DOMParser] (https://developer.mozilla.org/en-US/docs/Web/API/DOMParser)가 있으며이를 사용하여 DOM을 얻은 다음 모든 요소와 속성을 객체로 구문 분석하고, JSON.stringify를 사용하십시오. – adeneo

+0

@adeneo, 공평하게 말하자면, 그는 브라우저에서 이것을 실행하는 것처럼 보이지 않습니다. 그래도 적절한 구문 분석기를 사용해야한다는 데 동의합니다. – naomik

+0

저는 이것을 백엔드 REST 서버의 node.js 스크립트로 실행하고 있습니다. – Catfish

답변

1

toJson 메서드 내에서 parseString이 반환하는 값을 반환해야합니다. 현재 parseString은 반환하는 값을 반환하지 않고 parseString을 실행하기 만하면됩니다.

+0

나는'return jsonResult;'을 가지고있다. – Catfish

1

당신은

String.prototype.xml2js = function xml2js(done) { 
    parseString(this, {explicitArray: false}, done); 
}; 

전화를 당신은 적절한 XML 파서를 작성하는 당신의 생활, 당신의 지출 주를 끝낼거야이

"<parent><child>3</child></parent>".xml2js(function(err, json) { 
    //... 
}); 
+0

그래서 parseString 함수 내에서 return 문을 사용할 수 없다? – Catfish

+0

만약 당신이 가진 코드를 사용했다면, 비동기는 내 parseString 메서드가 단지 빈 객체 일 것입니다 json을 반환 할 것이기 때문에 b/c를 고문했을 것이라고 생각했을 것입니다. 그래서 나는 가지고 있어야한다고 생각했습니다. 내'return' 문을'parseString' 메소드 내에서 사용합니다. – Catfish

+0

범위 안에'parseString'을 지정하여 프로토 타입 체인에'toJSON'을 수정/추가했지만'toJSON'의 결과로 아무 것도 반환하지 않았습니다 – NickSuperb