Skip to content

Inconsistent mapping of XML to JS #69

@mellis481

Description

@mellis481

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:
Test_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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions