2011-07-19 41 views
7

Tôi có một tập tin XML, nhưPhân tích XML vào 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 

Làm thế nào tôi có thể phân tích này vào tập tin cấu trúc JSON?

+0

Bạn có ý nghĩa gì với "nhiều dữ liệu"? Ngoài ra, tại sao mũ? –

+1

Trong ngôn ngữ hoặc hệ thống nào? –

+0

Bạn có muốn làm điều đó trong Javascript HOẶC trong JAVA –

Trả lời

18

đối với một giải pháp đơn giản, tôi khuyên bạn nên Jackson, thư viện Java để tạo ra và đọc JSON với một phần mở rộng cho XML, vì nó có thể chuyển đổi XML phức tạp tùy ý vào JSON chỉ với một vài dòng mã đơn giản.

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> 

Bộ luật 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"}] 
    } 
} 

bản demo này sử dụng Jackson 1.7.7 (mới hơn 1.7.8 cũng nên làm việc), Jackson XML Databind 0.5.3 (chưa tương thích với Jackson 1.8) và Stax2 3.1.1.

+0

Có phải là cách nào mà không cần sử dụng một phần thứ ba không? – nich

+1

@nich Không, không hẳn. Bạn sẽ cần một thư viện từ một nơi nào đó trong ngôn ngữ gần như bất kỳ, mặc dù tôi tin rằng bạn có thể tránh sử dụng một thư viện iff bạn đã sử dụng Groovy, đó là nỗ lực nhiều như việc thêm một thư viện. Tìm hiểu về classpath sau đó tải về các lọ: gợi ý, nhìn vào tên gói. – ArtB

+1

Để tải xuống mới hơn về Jackson, hãy xem https://github.com/FasterXML/jackson-dataformat-xml/wiki –