问题是如何在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?所以我可以得到我需要的字段。
由于
答案 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对象。
或使用一些现成的解决方案,如下所示: