2017-11-24 5 views
-1

node.jsには完全にnoobieです。私は大学の研究者です。 私はXMLとJSON形式のファイルがたくさんあるので、たくさんのフォルダとファイルがあります。私はそれを読んで一つの標準(JSON/CSV)を作成し、最終的にMySQLデータベースにロードします。あなたはnpmパッケージを知っていますか完全に解決していますか?node.jsのjsonに多くのファイルとxmlを読み込みます

答えて

0

ありxmljsxml2json、などのようなJSONにXMLを変換するための多くのパッケージは

..ですしかし、あなたは同様にデータベースに挿入するための標準フォーマットに変換する必要があるように見えます。

私は自分自身と私は、この目的のためにcamaroをこの問題を書いている:JSON

にXMLを変換し、変換し、私がしなければならないのは、私は私のXMLは、XPathを使用して、あまりにも変換されることを希望出力テンプレートを書くことです以下のような構文

もちろん、必要な属性をすべて平坦化することもできます。以下はカマロができることの例です。 @tuananh

const transform = require('camaro') 
const fs = require('fs') 

const xml = fs.readFileSync('examples/ean.xml', 'utf-8') 
const template = { 
    cache_key: '/HotelListResponse/cacheKey', 
    hotels: ['//HotelSummary', { 
     hotel_id: 'hotelId', 
     name: 'name', 
     rooms: ['RoomRateDetailsList/RoomRateDetails', { 
      rates: ['RateInfos/RateInfo', { 
       currency: 'ChargeableRateInfo/@currencyCode', 
       non_refundable: 'boolean(nonRefundable = "true")', 
       price: 'number(ChargeableRateInfo/@total)' 
      }], 
      room_name: 'roomDescription', 
      room_type_id: 'roomTypeCode' 
     }] 
    }], 
    session_id: '/HotelListResponse/customerSessionId' 
} 

const result = transform(xml, template) 

0

おかげで、それは、キーまたは値として、タグのATTRを使用することは可能ですか?私のデータの価値のいくつかは、<name type="sub-name">Hotel name</name>または<hotelName id='12345'>Hotel name </name>のようにattrに持っています。それはカマロでできるのですか?

そして、私はしている<name type="sub-name">Hotel <nameHotel>Hilton</nameHotel></name>のような純粋なデータをしませんタグnameHotelを削除し、{name: 'Hotel Hilton'} として保存することが可能となる今

非常
+0

をありがとう、キーでXPathを使用することはできません、まだ私はよそれを将来考慮する。 –