Code Monkey home page Code Monkey logo

Comments (4)

1mike12 avatar 1mike12 commented on May 31, 2024 1

Although mapping works, it's annoying if your documents follow the element-attribute format, where it really makes way more sense to have the attribute kvs be added directly to the element object. Here's a quick working pr that makes this work #195

from xml-js.

michaelgwelch avatar michaelgwelch commented on May 31, 2024

I'm going to close this. I just realized I can easily use map to create the output I want.

from xml-js.

nashwaan avatar nashwaan commented on May 31, 2024

@michaelgwelch , Can you share an example of how you used map as I had previously many users asked for a similar result.

from xml-js.

michaelgwelch avatar michaelgwelch commented on May 31, 2024

@nashwaan Sure I can post the code I used. But others trying to follow my advice, my example is relatively simple.

The first thing I did was manually edit my JSON file so that instead of having something like

{
  "a": [
    {
      "_attributes": {
        "val": "5"
      }
    },
    {
      "_attributes": {
        "val": "6"
      }
    }
  ]
}

I had

  [
    {
      "_attributes": {
        "val": "5"
      }
    },
    {
      "_attributes": {
        "val": "6"
      }
    }
  ]

In other words, I removed the top level parent object, leaving me with just a JSON array. So applying map was quite simple. Assuming a file named events.json the following bit of code should do the trick (assume a filename of convert.js):

#!/usr/bin/evn node
const origEvents = require('./events.json');

const newEvents = origEvents.map( (val) => { return val["_attributes"] });

console.log(JSON.stringify(newEvents, null, 2))

Then from bash

$ chmod +x convert.js
$ ./convert.js > output.json

Note: my objects actually had dozens of fields, but for the sake of this example that isn't relevant. Just the shape of the JSON is what is relevant.

To recap:

I started with XML that had this shape:

<a val="5" />
<a val="6" />

Then I used xml-js in compact mode to get the JSON at the top of this comment. Manually removed the parent object and then ran the map function.

from xml-js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.