在angular2中解析XML

时间:2017-10-27 11:42:37

标签: xml angular

问题是如何在angular2中将xml转换为json格式? 我目前从外部页面收到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>davit.sisauri1@itcl.es
  </AvisosAltasPimEmailsDestino>
  <AvisosAltasWebEmailsDestino i:nil="true"/>
  <AvisosEmailOrigen>frioindustrialitcl@gmail.com</AvisosEmailOrigen>
  <AvisosEmailOrigenEnabledSSL>true</AvisosEmailOrigenEnabledSSL>
  <AvisosEmailOrigenHost>smtp.gmail.com</AvisosEmailOrigenHost>
  <AvisosEmailOrigenPassword>contrasenafrioindustrial
  </AvisosEmailOrigenPassword>
  <AvisosEmailOrigenPuerto>587</AvisosEmailOrigenPuerto>
  <AvisosIncidenciasEmailsDestino>davit.sisauri1@itcl.es,alvaro.ruiz@itcl.es
  </AvisosIncidenciasEmailsDestino>
  <AvisosOcupacionEmailsDestino>davit1.sisauri@itcl.es
  </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?所以我可以得到我需要的字段。

由于

1 个答案:

答案 0 :(得分: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