smartXML package enables you to read, search, manipulate, and write XML files with ease
Project description
smartXML
smartXML is a lightweight Python package for reading, searching, manipulating, and writing XML files with a clean and intuitive API.
It is designed to make common XML operations straightforward while preserving full control over the XML structure. The API is intentionally minimal and will evolve based on real-world usage and feedback.
At its core, the package provides:
SmartXML: a high-level representation of an XML documentElementBase: a common base class for all XML node types
Core Concepts
SmartXML
SmartXML represents an entire XML document, including its declaration and root element.
Properties
-
tree
The root element of the XML document. -
declaration
The XML declaration string
(e.g.<?xml version="1.0" encoding="UTF-8"?>)
Methods
-
read(path)
Read and parse an XML file from disk. -
write(path)
Write the current XML tree to a file. -
find(name: str = "", only_one: bool = True, with_content: str = None, case_sensitive: bool = True)
Search for descendant elements, by name and/or content. can return one or multiple results. -
to_string(indentation: str = "\t")
Serialize the entire XML document to a string.
ElementBase
ElementBase is the base class for all node types in the XML tree, including:
ElementCommentTextOnlyCommentCDataDoctype
It provides common navigation, manipulation, and serialization functionality.
Properties
-
name
The element name. -
parent
A reference to the parent element
(Noneif this is the root).
Methods
-
find(name: str = "", only_one: bool = True, with_content: str = None, case_sensitive: bool = True)
Search for descendant elements, by name and/or content. can return one or multiple results. -
remove()
Remove the current element from its parent. -
comment_out()
Comment out the current element. -
uncomment()
Restore a previously commented-out element. -
is_comment()
ReturnTrueif this element represents a comment. -
to_string(indentation: str = "\t")
Serialize the element (and its children) to a string. -
get_path()
Return the element’s path from the root, using|as a separator. -
add_before(sibling)
Insert this element before the given sibling. -
add_after(sibling)
Insert this element after the given sibling. -
add_as_first_son_of(parent)
Add this element as the first child of the given parent element. -
add_as_last_son_of(parent)
Add this element as the last child of the given parent element.
Design Goals
- Simple, readable API
- Explicit control over XML structure
- Safe and predictable tree manipulation
- Easy serialization back to valid XML
Usage Example
from pathlib import Path
from smartXML.xmltree import SmartXML, TextOnlyComment
input_file = Path('files/students.xml')
xml = SmartXML(input_file)
first_name = xml.find('students|student|firstName', with_content='Bob')
bob = first_name.parent
bob.comment_out()
header = TextOnlyComment('Bob is out')
header.add_before(bob)
xml.write()
result (files/students.xml):
<students>
<!-- Bob is out -->
<!--
<student id="S002">
<firstName>Bob</firstName>
<lastName>Levi</lastName>
</student>
-->
</students>
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 smartxml-1.1.2.tar.gz.
File metadata
- Download URL: smartxml-1.1.2.tar.gz
- Upload date:
- Size: 22.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e5da7d6ef41c7b2639a97ebf77ef38bfb49079930e9ccc15ea68e37917054f2
|
|
| MD5 |
0d1659f0af2e65438f963a70f8a3955a
|
|
| BLAKE2b-256 |
5a9475b0231f202fce6a631c0935b7e81298defe7e0255bde91b52f165afd4ec
|
File details
Details for the file smartxml-1.1.2-py3-none-any.whl.
File metadata
- Download URL: smartxml-1.1.2-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67ff51d850095cb20932e90070cad741df6665f6ecd23ebfc9b78cba664f56bf
|
|
| MD5 |
37324a0d3736355a3dba9534ba78974f
|
|
| BLAKE2b-256 |
2c7c4d0be29ab5bb7e8f47108cf3447a61edf5cb139767defcfc7854b40d1744
|