A simpler XML writer
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
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.2.3.tar.gz
(4.6 kB
view details)
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.2.3.tar.gz.
File metadata
- Download URL: XmlElement-0.2.3.tar.gz
- Upload date:
- Size: 4.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9606ee2b1a19e5b64676ccfb336c77a2a28e723ff275e1a6affbfe10fb846e72
|
|
| MD5 |
3abe72ed4cba7f54d6b902e9d67d7f63
|
|
| BLAKE2b-256 |
922279caaef6e9d00f14cbedef7679d401f4c2ea65594953b36ce0041d87987d
|
File details
Details for the file XmlElement-0.2.3-py3-none-any.whl.
File metadata
- Download URL: XmlElement-0.2.3-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.7.3 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
286c4de1b85e924adb3a94fd2429cafc6b73e6ee4a3bf9b1ecbe15753ae5d059
|
|
| MD5 |
499d302c73095e06d974c867226e7561
|
|
| BLAKE2b-256 |
cc077acb43c8f64982b46bc16caebc23c75c40a94c88e6cd6c9032d9f3bfc1f4
|