Búsqueda de sitios web

Análisis de datos XML en Angular 2


Soy nuevo en AngularJS2 y TypeScript, en mi proyecto tengo una variable de tipo string que contiene XML como cadena, necesito procesar la cadena y acceder a los datos en la cadena según el nodo en el XML. Estoy teniendo dificultades buscando en Google. Por favor, ayúdame.

<groupDirectory>
<directoryDetails>
 <userId>extn5001</userId>
 <firstName>Park</firstName>
 <lastName>1</lastName>
 <groupId>communications</groupId>
 <extension>5001</extension>
</directoryDetails>
<directoryDetails>
 <userId>Yealinkt27ptest</userId>
 <firstName>Yealink T</firstName>
 <lastName>27P</lastName>
 <groupId>communications</groupId>
 <extension>4676</extension>
</directoryDetails>
<groupDirectory>

Este es el XML que necesito procesar. Necesito acceder a los datos según los nodos, por ejemplo: nombre de

Respuesta #1

A día de hoy, el código sugerido en otra respuesta (que sugiere node-xml2js) no funcionó. En lugar de:

let parseString = require('xml2js').parseString;

Usé:

import { parseString } from 'xml2js';

La parte restante estaba bien. Se utilizó Angular-cli.

Respuesta #2

Si utilizas angular-cli para iniciar tu aplicación, el siguiente analizador XML viene ya con la instalación del proyecto.

https://github.com/Leonidas-from-XIV/node-xml2js

Así que no necesitas agregar módulos adicionales para esto. Como es un módulo clásico de commonJS, necesitas usar require para importarlo:

let parseString = require('xml2js').parseString;

Así que tu código puede verse así:

let parseString = require('xml2js').parseString;
let xml = "<root>Hello xml2js!</root>"

parseString(xml, function (err, result) {
  console.dir(result);
});

Recibirás la siguiente salida:

En cualquier caso, si ni siquiera usas angular-cli o quieres usar tu módulo preferido para analizar xml, usa require para cargarlo.