Welcome, guest | Sign In | My Account | Store | Cart
from xml.dom import minidom

class XmlNode:
    """An XML node represents a single field in an XML document."""

    def __init__(self, domElement):
        """Construct an XML node from a DOM element."""
        self.elem = domElement
    
    @classmethod
    def makeRoot(cls, xmlFileName):
        return cls(minidom.parse(xmlFileName))

    def getData(self):
        """Extract data from a DOM node."""
        for child in self.elem.childNodes:
            if child.nodeType == child.TEXT_NODE:
                return str(child.data)
        return None

    def getAttributeValue(self, name):
        """Returns the value of the attribute having the specified name."""
        return str(self.elem.attributes[name].value)

    def getChild(self, tag):
        """Returns the first child node having the specified tag."""
        return XmlNode(self.elem.getElementsByTagName(tag)[0])
    
    def getChildren(self, tag):
        """Returns a list of child nodes having the specified tag."""
        return [XmlNode(x) for x in self.elem.getElementsByTagName(tag)]

Diff to Previous Revision

--- revision 1 2010-11-03 18:28:10
+++ revision 2 2011-05-03 23:06:30
@@ -7,6 +7,10 @@
         """Construct an XML node from a DOM element."""
         self.elem = domElement
     
+    @classmethod
+    def makeRoot(cls, xmlFileName):
+        return cls(minidom.parse(xmlFileName))
+
     def getData(self):
         """Extract data from a DOM node."""
         for child in self.elem.childNodes:
@@ -25,8 +29,3 @@
     def getChildren(self, tag):
         """Returns a list of child nodes having the specified tag."""
         return [XmlNode(x) for x in self.elem.getElementsByTagName(tag)]
-
-
-def makeRootNode(xmlFileName):
-    """Creates the root node from an XML file."""
-    return XmlNode(minidom.parse(xmlFileName))

History