2017-10-27 25 views
0

質問は、angular2でxmlをjson形式に変換する方法ですか? 私は現在、外部のページからangular2の解析XML

私のサービスのxmlを受ける:

import { Injectable } from '@angular/core'; 
import {Http } from '@angular/http'; 

import { Observable } from 'rxjs/Observable'; 
import 'rxjs/add/observable/throw'; 
import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class Ganado2Service { 

    private url: string = 'http://bicicardpruebas.itcl.es/prodwservice/api/instalacion' 

    constructor(private http: Http) { } 

    getCiudad(id: number) { 
     return this.http.get(this.url + '/' + id) 
      .map(response => response.text()) 
      .catch(this.handleError) 
      .subscribe(data => { 
       if(data) { 
        console.log(data); 
       } 
      }) 

    } 

    handleError(error: any) { 
     let errMsg = (error.message) ? error.message : 
     error.status ? `${error.status} - ${error.statusText}` : 'Server error'; 
     console.error(errMsg); 
     return Observable.throw(errMsg); 
    } 
} 

マイコンポーネント:私は内部の書き込みをサブスクライブするのか分からない

export class GanadoComponent implements OnInit { 

    constructor(private ganadoService: Ganado2Service) { } 

    ngOnInit() { 
     this.ganadoService.getCiudad(1).subscribe(); 
    } 

} 

を。

すべてのXMLデータを返すようにします。

XML:

<CL_Instalacion xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/ClasesComunes"> 

    <AcquirerBin i:nil="true"/> 
    <AvisosAltasPimEmailsDestino>[email protected] 
    </AvisosAltasPimEmailsDestino> 
    <AvisosAltasWebEmailsDestino i:nil="true"/> 
    <AvisosEmailOrigen>[email protected]</AvisosEmailOrigen> 
    <AvisosEmailOrigenEnabledSSL>true</AvisosEmailOrigenEnabledSSL> 
    <AvisosEmailOrigenHost>smtp.gmail.com</AvisosEmailOrigenHost> 
    <AvisosEmailOrigenPassword>contrasenafrioindustrial 
    </AvisosEmailOrigenPassword> 
    <AvisosEmailOrigenPuerto>587</AvisosEmailOrigenPuerto> 
    <AvisosIncidenciasEmailsDestino>[email protected],[email protected] 
    </AvisosIncidenciasEmailsDestino> 
    <AvisosOcupacionEmailsDestino>[email protected] 
    </AvisosOcupacionEmailsDestino> 
    <Ciudad>Burgos</Ciudad> 
    <ClaveEncriptacion i:nil="true"/> 
    <HabilitadoHorario>true</HabilitadoHorario> 
    <Hora>2017-10-27T12:55:51.1868855+02:00</Hora> 
    <IdiomasPorDefecto>FR</IdiomasPorDefecto> 
    <MaxBicis>5</MaxBicis> 
    <id>1</id> 

</CL_Instalacion> 

どのように私はJSONにそれを解析することができますか?私は必要なフィールドを得ることができます。

おかげ

答えて

0

あなたはDOMParser経由でXMLを解析することができます:

https://www.w3schools.com/xml/xml_parser.asp

使用例:

var text, parser, xmlDoc; 

text = "<bookstore><book>" + 
    "<title>Everyday Italian</title>" + 
    "<author>Giada De Laurentiis</author>" + 
    "<year>2005</year>" + 
    "</book></bookstore>"; 

parser = new DOMParser(); 
xmlDoc = parser.parseFromString(text,"text/xml"); 

document.getElementById("demo").innerHTML = xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue; 

は、あなたはおそらく手動でJSオブジェクトにそれをマップする必要があります。

またはこのようないくつかの既製のソリューションを、使用します。

https://github.com/metatribal/xmlToJSON

https://github.com/abdmob/x2js

+0

OKSおかげで、私がしてみてください –