2017-01-24 6 views
2

타사 사이트 데이터베이스 및 관리 콘솔에서 실행되는 프런트 엔드 웹 시스템을 구축하려고합니다. API는 GET 호출에 전적으로 의존하며 특정 URL을 대상으로 정보를 요청하거나 변경합니다.XML API 콘텐츠를 EmberJS로 올바르게 구문 분석하는 방법은 무엇입니까?

API는 XML, 예를 반환 내가 전에 EmberJs을 사용하지 않은

<responseITEMs xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <ITEMs> 
    <ITEM libraryid="e3712df592253fcb4" featured="false" releasedate="2017-24-01 00:00:00" code="ABC001" detail="Some text" name="Dummy One" displaytitle="Dummy One" keywords="" id="1fef760bc1d61c8c" status="active" lastupdated="2016-24-01 04:53:28"/> 
    <ITEM libraryid="e3712df592253fcb4" featured="false" releasedate="2017-24-01 00:00:00" code="ABC003" detail="Some text" name="Dummy Three" displaytitle="Dummy Three" keywords="" id="3e35wba1d9b32a45" status="active" lastupdated="2016-24-01 04:53:15"/> 
    <ITEM libraryid="e3712df592253fcb4" featured="false" releasedate="2017-24-01 00:00:00" code="ABC002" detail="Some text" name="Dummy Two" displaytitle="Dummy Two" keywords="" id="cca6f0cab9defe80" status="active" lastupdated="2017-24-01 01:57:37"/> 
    </ITEMs> 
</responseITEMs> 

을, 그러나 그것은 나에게 제안했다. 나는 XML을 사용하는 것이 가능 확실하지 않다, 그래서 나는 현재 PHP 스크립트가 고정 된 API의 URL 엔드 포인트를 부르고 다른 로컬 서버에서 실행하고 JSON에 대한 응답으로 변환이 있습니다

$Json = json_encode(simplexml_load_string($data)); 
echo $Json; 

내가 끝 JSON을 이 같은 외모와 함께 :

ITEMs: { 
    ITEM: [ 
    { 
     @attributes: { 
     libraryid: "e3712df592253fcb4", 
     featured: "false", 
     releasedate: "2017-24-01 00:00:00", 
     code: "ABC001", 
     detail: "Some text", 
     name: "Dummy One", 
     displaytitle: "Dummy One", 
     keywords: "", 
     id: "1fef760bc1d61c8c", 
     status: "active", 
     trackcount: "0", 
     lastupdated: "2016-24-01 04:53:28" 
     } 
    }, 
    { 
    @attributes: {..... etc 

나는 내가 엠버 템플릿의 항목을 통해 간단한 루프를 (실제 용어는 항목 없음) 실행할 수있는 것을 의미하는 것이다 엠버의 정규화를 작성하려합니다. 이 시점 엠버 관리자에서

import DS from 'ember-data'; 
export default DS.RESTSerializer.extend({ 
    normalizeResponse(store, primaryModelClass, payload, id, requestType) { 
    payload = { 
     ITEM: { 
     id: payload.ITEMs.ITEM[0]["@attributes"].id, 
     type: requestType.modelName, 
     name: payload.ITEMs.ITEM[0]["@attributes"].name 
     } 
    }; 
    return this._super(store, primaryModelClass, payload, id, requestType); 
    } 
}); 

내가 데이터 탭에서 ID와 이름을 얻고 있음을 보여 주지만, 내 템플릿에 그들을 얻을, 또는 분명히 인해 첫 번째 항목 이상 검색 할 수 없습니다 : 현재 그것은이다 하드 코드 된 ITEM [0]에 저장합니다.

경로 :

export default Ember.Route.extend({ 
    model() { 
    return this.store.findAll('ITEM'); 
    } 
}); 

모델 :

export default DS.Model.extend({ 
    name: DS.attr('string'), 
}); 

템플릿 :

<strong>{{ model.name }}</strong> 

<ul> 
    {{#each model.ITEM as |one|}} 
    <li>{{one.name}}</li> 
    {{/each}} 
</ul> 

은 분명히 내가 멀리 함께하지 오전 전혀 잘 엠버을 모른다. 나는 현재의 코드에 대한 기술 입력뿐만 아니라이 문제를 해결할 더 나은 솔루션에 대해 개방적이며 감사 할 것입니다.

+0

당신은 [JS에서 XML을 구문 분석] 수 (https://api.jquery.com/jQuery.parseXML/). – Lux

답변

1

php-script를 사용하는 경우 XML을 PHP 측에서 올바른 응답으로 변환 할 수 있습니다. 왜이 경우 serializer를 사용합니까?

다른 솔루션은 php-convertion이없는 XML 응답으로 작동하는 새로운 어댑터 및 serializer를 만드는 것입니다.

당신은 도움이 링크를 찾을 수 있습니다

: https://bendyworks.com/blog/old-new-soap-ember-js

+0

오랫동안 SOAP로 작업하지 않았기 때문에 요즘에는 유용하지 않습니다.하지만 Ember에 클라이언트가있는 동안 WCF 및 이전 작업을하고 있다면 링크의 해당 문서를 반드시 읽어야합니다. – MilkyWayJoe