什么是节点JS的XML转换器模块最好的JSON或JS对象

我需要构build一个相对简单的XML文档,其中包含一些层次结构和JS对象的一些属性。 在select其中一个模块之前,我站在这里:

  • https://github.com/davidcalhoun/jstoxml
  • https://github.com/soldair/node-jsontoxml
  • https://github.com/QuickenLoans/node-easyxml
  • https://github.com/michaelkourlas/node-js2xmlparser

我应该select哪个模块?

这个问题可能会被认为不是一个好问题,但是我不知道如何去询问它。

免责声明:我在每个存储库上发布了相同的问题作为问题

这是我想要构build的XML:

<?xml version="1.0" encoding="UTF-8"?> <orders> <order> <order_orderid>123123</order_orderid> <order_customerid>345345</order_customerid> <order_senhcode>7604</order_senhcode> <order_mediacode>qwert</order_mediacode> <order_totalshippingcost>0</order_totalshippingcost> <order_paymentmethod>GB</order_paymentmethod> <order_paymentnumber /> <order_htmltext /> <order_comment /> <shippingmethodid>02</shippingmethodid> <order_creditcardnumber /> <order_creditcardnameholder /> <order_creditcardexpiredate /> <order_creditcardsafetycode /> <order_gifttext /> <inv_customer> <inv_customer_addresstypeid /> <inv_customer_gendermale>0</inv_customer_gendermale> <inv_customer_firstname>qwerty</inv_customer_firstname> <inv_customer_initials>QWE</inv_customer_initials> <inv_customer_prename /> <inv_customer_lastname>Qwerty</inv_customer_lastname> <inv_customer_company>Some company</inv_customer_company> <inv_customer_street>Postbus</inv_customer_street> <inv_customer_housenumber>13</inv_customer_housenumber> <inv_customer_housenumberadditional /> <inv_customer_postalcode>1234 AB</inv_customer_postalcode> <inv_customer_city>THERE</inv_customer_city> <inv_customer_isocodecountry>NL</inv_customer_isocodecountry> <inv_customer_email>a@b.nl</inv_customer_email> <inv_customer_telephone>0168-123456</inv_customer_telephone> <inv_customer_mobilenr>06-12345678</inv_customer_mobilenr> </inv_customer> <orderlines> <orderline> <orderline_orderrecordid>1234</orderline_orderrecordid> <orderline_orderid>8765432</orderline_orderid> <orderline_articlenr>164-05-366</orderline_articlenr> <orderline_quantity>2</orderline_quantity> <orderline_productdescription>Some gift voucher</orderline_productdescription> <orderline_price>1233</orderline_price> </orderline> <orderline> <orderline_orderrecordid>5678</orderline_orderrecordid> <orderline_orderid>8765432</orderline_orderid> <orderline_articlenr>164-05-367</orderline_articlenr> <orderline_quantity>3</orderline_quantity> <orderline_productdescription>Some other gift voucher</orderline_productdescription> <orderline_price>1244</orderline_price> </orderline> </orderlines> </order> </orders> 

我调查了自己

 | author | davidcalhoun | soldair | QuickenLoans | michaelkourlas | |---------------|--------------|-----------|--------------|----------------| | module | jstoxml | node- | node- | node- | | | | jsontoxml | easyxml | js2xmlparser | | Commits | 31 | 64 | 39 | 61 | | Recent commit | a year ago | 2 years ag| 6 months ago | 16 days ago | | Contributors | 2 | 7 | 7 | 6 | | Issues | 16 | 19 | 17 | 15 | | Open Issues | 7 | 1 | 6 | 1 | | npm install | jstoxml | not found | easyxml | js2xmlparser | | Dependencies | None | None | elementtree, | None | | | | | inflect | | | Throws errors | None | None | 3 | 12 | 

然后是需要比较的对象的types

davidcalhoun / jstoxml :

 { "_name": 'foo', "_content": 'bar', "_attrs": { "a": 'b', "c": 'd' } } 

soldair / node-jsontoxml :看起来很复杂

QuickenLoans / easyxml :

 items: [{ "name": 'one', "_id": 1 }, { "name": 'two', "_id": 2 } ] 

michaelkourlas /节点js2xmlparser

 foo: { "#": 'bar', "@": { a: 'b', c: 'd' } } 

我想我会给michaelkourlas的node-js2xmlparser一个镜头。

更新:现在似乎有2更值得一提:

  • chilts / data2xml
  • oozcitak / xmlbuilder-JS

后者是迄今为止最成熟,并在npm下载。 它允许您一次或迭代地构buildXML。