x2js icon indicating copy to clipboard operation
x2js copied to clipboard

Inconsistent mapping of XML to JS

Open mellis481 opened this issue 7 years ago • 1 comments

I have XML which contains a Purchase which has an optional attribute called purchaseClass.

So the XML could look like this:

<Purchase purchaseClass="Test_Class">Test_Purchase</Purchase>

or this: <Purchase>Test_Purchase</Purchase>

I'm using the following code to convert the above XML string into JS:

const options: X2JS.Options = { };
const x2js = new X2JS(options);
const obj = x2js.xml2js(xml);

This works as expected when the purchaseClass attribute and the inner text is specified. The resulting converted JS object looks like this:

Purchase:  {
   _purchaseClass: 'Test_Class',
   __text: 'Test_Purchase'
}

The problem occurs if purchaseClass is not included. In this case, the converted javascript object looks like this, where the Purchase property is a string rather than an object:

Purchase: 'Test_Purchase'

Here is the example, where the purchaseClass property is optional.

arrayAccessForm is a config property that allows you to identify arrays in your XML. Is there a similar concept for objects with optional properties to avoid having the issue described above?

mellis481 avatar Aug 07 '18 17:08 mellis481

This is a huge issue for this library. Unless x2js is in maintenance mode, the author needs to address this ASAP.

mellis481 avatar Oct 15 '18 14:10 mellis481