A simpler XML writer and xml-to-dict converter
Project description
XmlElement
A simpler XML writer.
Installation
pip install XmlElement
Test
>>> from XmlElement import XmlElement as X
>>> xml = X.from_string('<test><x/></test>')
>>> xml
XmlElement(test)
Usage
Command line
After installing XmlElement, two command line tools will be provided:
xml_to_json example.xml # print json from xml file to stdout
json_to_xml example.json # print xml from json file to stdout
cat example.xml | xml_to_json # print json from xml stdin to stdout
cat example.json | json_to_xml # print xml from json stdin to stdout
Build a XML by nesting XmlElements
from XmlElement import XmlElement as X
xml = X('RootElement', s=[ # root element without attributes
X('Child1', {'testattr': 'Example attribute'}, [ # sub element with an attribute
X('Child2', t='Example text value') # sub-sub element with text value
])
])
Alternative: Build a XML from a POJO-like object:
from XmlElement import XmlElement as X
xml2 = X.from_object(
node_name='RootElement', # root element without attributes
data={ # no @-elements: root has -> no attributes
'Child1': { # sub element with an attribute @testattr
'@testattr': 'Example attribute',
'Child2': 'Example text value' # sub-sub element with text value
}
}
)
print(str(xml) == str(xml2)) # True
Accessing values by dot operator
print(xml)
print(xml.Child1[0].attributes['testattr']) # Example attribute
print(xml.Child1[0].Child2[0].text) # Example text value
Accessing values dict-like (to avoid static type checker warnings)
print(xml)
print(xml['Child1'][0].attributes['testattr']) # Example attribute
print(xml['Child1'][0]['Child2'][0].text) # Example text value
Converting XmlElement to POJO-like object
from XmlElement import XmlElement as X
xml = X('RootElement', s=[ # root element without attributes
X('Child1', {'testattr': 'true'}, [ # sub element with a boolean attribute
X('Child2', t='1234'), # sub-sub element with int-like value
X('Child3', t='-1234.56') # sub-sub element with float-like value
])
])
print(xml) # <RootElement><Child1 testattr="true"><Child2>1234</Child2><Child3>-1234.56</Child3></Child1></RootElement>
print(xml.to_dict()) # {'Child1': {'@testattr': True, 'Child2': 1234, 'Child3': -1234.56}}
print(xml.to_dict( # {'Child1': {'@testattr': 'true', 'Child2': '1234', 'Child3': '-1234.56'}}
recognize_numbers=False,
recognize_bool=False)
)
Subnodes of equal names under a node will result in a list. However, this cannot recognize if a single element should be list in another context.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file XmlElement-0.3.2.tar.gz.
File metadata
- Download URL: XmlElement-0.3.2.tar.gz
- Upload date:
- Size: 5.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb5cab4d27104ce5367c9ae607d6fc36817aa2374612fcb95c678be7b01a6156
|
|
| MD5 |
4e2b35e6376215dc9f47e1eb73dc2f81
|
|
| BLAKE2b-256 |
f2e86084dc7432fa0c528a4a7b8302ecbdfeabe124e84cab15aa43fef9264eca
|
File details
Details for the file XmlElement-0.3.2-py3-none-any.whl.
File metadata
- Download URL: XmlElement-0.3.2-py3-none-any.whl
- Upload date:
- Size: 6.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.10.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
af40d0eb5355eead5572473928aa1d2c210144df259c84fa0e8ad801edcb644f
|
|
| MD5 |
c456ce6ad98746a9b925841ec2a72540
|
|
| BLAKE2b-256 |
033033847bfef589ddf7ba6c6883a9ec565356d7adc0427d987c87fdc406f992
|