json2xml icon indicating copy to clipboard operation
json2xml copied to clipboard

@attrs keyword does not work at the root level

Open ernieIzde8ski opened this issue 1 year ago • 1 comments

Describe the bug

Attempting to declare attributes for the 'wrapper' node results in them being added as their own nodes.

To Reproduce

Steps to reproduce the behavior:

from json2xml.json2xml import Json2xml
from json2xml.utils import readfromstring

data = {
    "@attrs": {
        "a": "b"
    }
}
result = Json2xml(data).to_xml()
print(result)

Result:

<?xml version="1.0" ?>
<all>
        <key name="@attrs" type="dict">
                <a type="str">b</a>
        </key>
</all>

Expected behavior

It should print something more like this:

<?xml version="1.0" ?>
<all a="b"/>

Desktop (please complete the following information):

  • OS: Windows
  • Python version 3.11
  • json2xml.__version__: 4.0.0

ernieIzde8ski avatar Sep 22 '23 09:09 ernieIzde8ski

Might want to close this issue since there is a convenient workaround

data = { ... }
data = {"all": data}
result = Json2xml(data, root=False).to_xml()

ernieIzde8ski avatar Sep 22 '23 11:09 ernieIzde8ski