Source code for dictdumper.xml
# -*- coding: utf-8 -*-
"""dumper a XML file
.. note::
Do not use the :class:`~dictdumper.xml.XML` directly.
:mod:`dictdumper.xml` contains :class:`~dictdumper.xml.XML`
only, which dumpers an extensible markup language (XML) format
file. Usage sample is described as below.
.. code:: python
>>> dumper = XML(file_name)
>>> dumper(content_dict_1, name=content_name_1)
>>> dumper(content_dict_2, name=content_name_2)
............
.. todo::
* Supports more ``dtd`` of XML.
"""
# TODO: Supports more ``dtd`` of XML. # pylint: disable=fixme
# Dumper for XML files
# Write a XML file for PCAP analyser
import abc
from dictdumper.dumper import Dumper
__all__ = ['XML']
#: XML head string.
_HEADER_START = '''\
<?xml version="1.0" encoding="UTF-8"?>
<content>
'''
#: XML tail string.
_HEADER_END = '''\
</content>
'''
[docs]
class XML(Dumper):
"""Dump extensible markup language (XML) file.
Note:
This is a base dumper for XML format. No ``dtd`` supported.
.. code:: python
>>> dumper = XML(file_name)
>>> dumper(content_dict_1, name=content_name_1)
>>> dumper(content_dict_2, name=content_name_2)
............
Attributes:
_file (str): output file name
_sptr (int): indicates start of appending point (file pointer)
_tctr (int): tab level counter
_hsrt (str): start string (:data:`~dictdumper.plist._HEADER_START`)
_hend (str): end string (:data:`~dictdumper.plist._HEADER_END`)
"""
##########################################################################
# Properties.
##########################################################################
@property
def kind(self):
"""File format of current dumper.
:rtype: Literal['xml']
"""
return 'xml'
##########################################################################
# Attributes.
##########################################################################
#: XML head string.
_hsrt = _HEADER_START
#: XML tail string.
_hend = _HEADER_END
##########################################################################
# Utilities.
##########################################################################
[docs]
@abc.abstractmethod
def _append_value(self, value, file, name):
"""Call this function to write contents.
Args:
value (Dict[str, Any]): content to be dumped
file (io.TextIOWrapper): output file
name (str): name of current content block
"""