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
XmlElement-0.3.2.tar.gz
(5.5 kB
view details)
Built Distribution
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 |