2013-02-13 98 views
1

我對Node.js比較陌生。我試圖將大小約爲400MB的83個XML文件轉換爲JSON。Node.js將Xml轉換爲JSON以用於大型Xml文件的示例

每個文件包含這樣的數據(除了每個元件具有大量的附加語句):

<case-file> 
    <serial-number>75563140</serial-number> 
    <registration-number>0000000</registration-number> 
    <transaction-date>20130101</transaction-date> 
    <case-file-header> 
    <filing-date>19981002</filing-date> 
    <status-code>686</status-code> 
    <status-date>20130101</status-date> 
    </case-file-header> 
    <case-file-statements> 
    <case-file-statement> 
     <type-code>D10000</type-code> 
     <text>"MUSIC"</text> 
    </case-file-statement> 
    <case-file-statement> 
     <type-code>GS0351</type-code> 
     <text>compact discs</text> 
    </case-file-statement> 
    </case-file-statements> 
    <case-file-event-statements> 
    <case-file-event-statement> 
     <code>PUBO</code> 
     <type>A</type> 
     <description-text>PUBLISHED FOR OPPOSITION</description-text> 
     <date>20130101</date> 
     <number>28</number> 
    </case-file-event-statement> 
    <case-file-event-statement> 
     <code>NPUB</code> 
     <type>O</type> 
     <description-text>NOTICE OF PUBLICATION</description-text> 
     <date>20121212</date> 
     <number>27</number> 
    </case-file-event-statement> 
    </case-file-event-statements> 

我已經嘗試了許多不同的節點模塊,包括薩克斯,節點的XML的,node-expat和xml2json。很顯然,我需要從文件中傳輸數據並通過XML解析器管理它,然後將其轉換爲JSON。

我也嘗試閱讀大量的博客等嘗試解釋,雖然表面上,如何解析XML。

在Node universe中,我先嚐試了sax,但我無法弄清楚如何以可以將其轉換爲JSON的格式提取數據。 xml2json不能在流上工作。 node-xml看起來令人鼓舞,但我無法弄清楚它如何以任何合理的方式解析塊。 node-expat指向libexpat文檔,這似乎需要一個博士學位。 Node elementree也一樣,指向Python實現,但沒有解釋已經實現了什麼或者如何使用它。

有人能指點我可以用來開始的例子嗎?

+0

你可以使用節點模塊jquery來解析xml(與瀏覽器端相同)。 – 2013-02-13 06:54:00

+0

解析XML不是問題。我用sax取得了成功。它很好地傳輸數據。問題是將其轉換爲Json。我找不到流Json解析器。我沒有嘗試節點jquery,因爲它的自述文件說它不適用於Windows,而我正在開發Windows。我終於寫了一個Json轉換器。 – 2013-02-18 12:24:16

回答

0

我想現在你有一個工作過程,考慮你最後的答案。

無論如何,如果您已經使用SAX成功解析了傳入數據,解決方案可能會簡單地將數據放入您設計的對象中,並使用yourStream.write(JSON.stringify(yourObject)) 將其流出。

1

我懷疑這個問題在2-3年之後仍然有效,但如果有其他人絆倒了這個位置,我會說xml-stream對NPM看起來相當直接。

如果你是誰想要避免GYP但是我嘗試添加使用sax提取孩子形成一個XML文件,一個一個非常簡單的解決方案,這就是所謂的no-gyp-xml-stream,它可能不會有很多功能的Windows用戶,但它確實很簡單:https://www.npmjs.com/package/no-gyp-xml-stream