aboutsummaryrefslogtreecommitdiff
path: root/mammoth/xmlparser.py
diff options
context:
space:
mode:
Diffstat (limited to 'mammoth/xmlparser.py')
-rw-r--r--mammoth/xmlparser.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/mammoth/xmlparser.py b/mammoth/xmlparser.py
index 8b26777..d58ea75 100644
--- a/mammoth/xmlparser.py
+++ b/mammoth/xmlparser.py
@@ -2,7 +2,25 @@ import collections
import xml.sax
-XmlElement = collections.namedtuple("XmlElement", ["name", "attributes", "children"])
+XmlElementBase = collections.namedtuple("XmlElement", ["name", "attributes", "children"])
+class XmlElement(XmlElementBase):
+ def find_child_or_null(self, name):
+ for child in self.children:
+ if child.name == name:
+ return child
+ return _null_xml_element
+
+
+class NullXmlElement(object):
+ attributes = {}
+
+ def find_child_or_null(self, name):
+ return self
+
+
+_null_xml_element = NullXmlElement()
+
+
XmlText = collections.namedtuple("XmlText", ["value"])