-#! /usr/bin/env python
+#! /usr/bin/env python3
"""XML Virtual FileSystem for Midnight Commander
The script requires Midnight Commander 3.1+
cd file#xml, where "file" is the name of your XML file.
See detailed installation instructions at
-http://phdru.name/Software/mc/xml_INSTALL.html.
+https://phdru.name/Software/mc/xml_INSTALL.html.
The VFS represents tags as directories; the directories are numbered to
distinguish tags with the same name; numbering also helps to sort tags by their
"""
-__version__ = "1.1.5"
+__version__ = "1.2.0"
__author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2013-2015 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2013-2023 PhiloSoft Design"
__license__ = "GPL"
# Can be None for default choice, 'lxml', 'elementtree' or 'minidom'.
from time import localtime
import xml.dom.minidom
-try:
- import xml.etree.ElementTree as ET
-except ImportError:
- pass
-else:
- use_elementtree = True
+if sys.version_info[0] == 2:
+ try:
+ import xml.etree.ElementTree as ET
+ except ImportError:
+ pass
+ else:
+ use_elementtree = True
try:
import lxml.etree as etree
# Get the default charset.
try:
lcAll = locale.getdefaultlocale()
- except locale.Error, err:
- print >>sys.stderr, "WARNING:", err
+ except locale.Error as err:
+ print("WARNING:", err, file=sys.stderr)
lcAll = []
if len(lcAll) == 2:
else:
try:
default_encoding = locale.getpreferredencoding()
- except locale.Error, err:
- print >>sys.stderr, "WARNING:", err
+ except locale.Error as err:
+ print("WARNING:", err, file=sys.stderr)
default_encoding = sys.getdefaultencoding()
else:
default_encoding = sys.getdefaultencoding()
root_comments = self.get_root_comments()
if root_comments:
- print "-r--r--r-- 1 user group %d %s text" % (
- len(root_comments), self.xml_file_dt)
+ print("-r--r--r-- 1 user group %d %s text" % (
+ len(root_comments), self.xml_file_dt))
self._list(self.getroot())
else:
subpath = '%s %s' % (template % n, tag)
subpath_encoded = subpath.encode(default_encoding, "replace")
- print "dr-xr-xr-x 1 user group 0 %s %s" % (
- self.xml_file_dt, subpath_encoded)
+ print("dr-xr-xr-x 1 user group 0 %s %s" % (
+ self.xml_file_dt, subpath_encoded))
if self.getattrs(element):
attr_text = self.attrs2text(element)
- print "-r--r--r-- 1 user group %d %s %s/attributes" % (
- len(attr_text), self.xml_file_dt, subpath_encoded)
+ print("-r--r--r-- 1 user group %d %s %s/attributes" % (
+ len(attr_text), self.xml_file_dt, subpath_encoded))
if self.supports_namespaces and self.has_ns(element):
ns_text = self.ns2text(element)
- print "-r--r--r-- 1 user group %d %s %s/namespaces" % (
- len(ns_text), self.xml_file_dt, subpath_encoded)
+ print("-r--r--r-- 1 user group %d %s %s/namespaces" % (
+ len(ns_text), self.xml_file_dt, subpath_encoded))
text = self.collect_text(element)
if text:
- print "-r--r--r-- 1 user group %d %s %s/text" % (
- len(text), self.xml_file_dt, subpath_encoded)
+ print("-r--r--r-- 1 user group %d %s %s/text" % (
+ len(text), self.xml_file_dt, subpath_encoded))
self._list(element, subpath)
def get_tag_node(self, node, i):
g[procname]()
except SystemExit:
raise
-except:
+except Exception:
logger.exception("Error during run")