2011-07-19 24 views
7

Tengo un archivo XML, comoAnálisis de XML en JSON

<stock><name>AXL</name><time>19-07</time><price>11.34</price></stock> 
<stock><name>AIK</name><time>19-07</time><price>13.54</price></stock> 
<stock><name>ALO</name><time>19-07</time><price>16.32</price></stock> 
<stock><name>APO</name><time>19-07</time><price>13.56</price></stock> 
...............more 

¿Cómo puedo analizar esto en archivo de estructura JSON?

+0

¿Qué quiere decir con "gran cantidad de datos"? Además, ¿por qué las tapas? –

+1

¿En qué idioma o sistema? –

+0

¿Desea hacer eso en Javascript? O en JAVA –

Respuesta

18

para una solución sencilla, recomiendo Jackson, una biblioteca Java para generar y leer JSON con una extensión de XML, ya que puede transformar arbitrariamente complejo XML en JSON con solo unas pocas líneas simples de código.

input.xml

<entries> 
    <stock><name>AXL</name><time>19-07</time><price>11.34</price></stock> 
    <stock><name>AIK</name><time>19-07</time><price>13.54</price></stock> 
    <stock><name>ALO</name><time>19-07</time><price>16.32</price></stock> 
    <stock><name>APO</name><time>19-07</time><price>13.56</price></stock> 
</entries> 

el código Java:

import java.io.File; 
import java.util.List; 

import org.codehaus.jackson.map.ObjectMapper; 

import com.fasterxml.jackson.xml.XmlMapper; 

public class Foo 
{ 
    public static void main(String[] args) throws Exception 
    { 
    XmlMapper xmlMapper = new XmlMapper(); 
    List entries = xmlMapper.readValue(new File("input.xml"), List.class); 

    ObjectMapper jsonMapper = new ObjectMapper(); 
    String json = jsonMapper.writeValueAsString(entries); 
    System.out.println(json); 
    // [{"name":"AXL","time":"19-07","price":"11.34"},{"name":"AIK","time":"19-07","price":"13.54"},{"name":"ALO","time":"19-07","price":"16.32"},{"name":"APO","time":"19-07","price":"13.56"}] 
    } 
} 

Esta demo utiliza Jackson 1.7.7 (la más reciente 1.7.8 También hay que trabajar), Jackson XML Databind 0.5.3 (todavía no compatible con Jackson 1.8) y Stax2 3.1.1.

+0

¿Eso es de alguna manera sin usar un material de tercera parte? – nich

+1

@nich No, en realidad no. Necesitarás una biblioteca de casi cualquier idioma, aunque creo que puedes evitar el uso de una biblioteca si usas Groovy, que es tanto esfuerzo como agregar una biblioteca. Aprende sobre el classpath luego descarga los jars: insinuación, mira los nombres de los paquetes. – ArtB

+1

Para las descargas más recientes de Jackson, consulte https://github.com/FasterXML/jackson-dataformat-xml/wiki –