在node.js

时间:2017-11-24 13:10:02

标签: json node.js xml file converter

我在node.js中完全是noobie,我是一名大学研究员。 我有很多XML和JSON格式的文件,我有很多文件夹和文件,我需要阅读它并创建一个标准(用JSON / CSV),最后加载到MySQL数据库,任何提示?你知道npm包还是完全解决方案?

2 个答案:

答案 0 :(得分:0)

有很多用于将xml转换为json的包,如xmljsxml2json等。

但看起来您需要转换为标准格式以便插入数据库。

我自己有这个问题,为此我写了camaro:将xml转换并转换为json

我所要做的就是编写一个输出模板,我希望我的xml也可以使用xpath语法进行转换,如下所示

当然,您可以展平所需的所有属性;以下只是camaro可以做的例子。

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)

答案 1 :(得分:0)

谢谢@tuananh 是否可以使用标签的attr作为键或值?我可以在camaro中使用<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'} 非常感谢你