Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/simonw/xml-analyser
Simple command line tool for quickly analysing the structure of an arbitrary XML file
https://github.com/simonw/xml-analyser
xml
Last synced: 4 months ago
JSON representation
Simple command line tool for quickly analysing the structure of an arbitrary XML file
- Host: GitHub
- URL: https://github.com/simonw/xml-analyser
- Owner: simonw
- License: apache-2.0
- Created: 2009-11-26T17:11:08.000Z (about 15 years ago)
- Default Branch: main
- Last Pushed: 2023-06-02T23:19:18.000Z (over 1 year ago)
- Last Synced: 2024-10-06T20:30:47.771Z (4 months ago)
- Topics: xml
- Language: Python
- Homepage:
- Size: 18.6 KB
- Stars: 29
- Watchers: 5
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# xml-analyser
[![PyPI](https://img.shields.io/pypi/v/xml-analyser.svg)](https://pypi.org/project/xml-analyser/)
[![Changelog](https://img.shields.io/github/v/release/simonw/xml-analyser?include_prereleases&label=changelog)](https://github.com/simonw/xml-analyser/releases)
[![Tests](https://github.com/simonw/xml-analyser/workflows/Test/badge.svg)](https://github.com/simonw/xml-analyser/actions?query=workflow%3ATest)
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](https://github.com/simonw/xml-analyser/blob/main/LICENSE)A tool showing various statistics about element usage in an arbitrary XML file.
## Installation
pip install xml-analyser
Or using [pipx](https://pypa.github.io/pipx/):
pipx install xml-analyser
## Usage
xml-analyser example.xml
If `example.xml` looks like this:
```xml
This has text
More text here
```
`xml-analyzer example.xml` outputs this:
```json
{
"example": {
"count": 1,
"parent_counts": {},
"attr_counts": {},
"child_counts": {
"foo": 2
}
},
"foo": {
"count": 2,
"parent_counts": {
"example": 2
},
"attr_counts": {},
"child_counts": {
"bar": 2,
"baz": 1
}
},
"bar": {
"count": 2,
"parent_counts": {
"foo": 2
},
"attr_counts": {
"a": 2,
"b": 2,
"c": 1
},
"child_counts": {
"baz": 2
}
},
"baz": {
"count": 3,
"parent_counts": {
"bar": 2,
"foo": 1
},
"attr_counts": {
"d": 1
},
"child_counts": {},
"count_with_text": 2,
"max_text_length": 14
}
}
```## Truncating the XML instead
The `--truncate` option works differently: the XML file passed to this tool will be truncated, by finding any elements with more than two child elements of the same type and truncating to just those two elements.
This can reduce a large XML file to something that's easier to understand.
Given an example document like this one:
```xml
This has text
This has text
This has text
This has text
More text here
More text here
```
The following command:xml-analyser example.xml --truncate
Will return the following:
```xml
This has text
This has text
More text here
```