1.1 --- a/libxml2dom/__init__.py Tue Mar 13 19:31:48 2007 +0000
1.2 +++ b/libxml2dom/__init__.py Tue Mar 13 19:33:06 2007 +0000
1.3 @@ -56,6 +56,12 @@
1.4 else:
1.5 return Node(_node, self, context_node.ownerDocument)
1.6
1.7 + def get_node_or_none(self, _node, context_node):
1.8 + if _node is None:
1.9 + return None
1.10 + else:
1.11 + return self.get_node(_node, context_node)
1.12 +
1.13 # Attribute and node list wrappers.
1.14
1.15 class NamedNodeMap(object):
1.16 @@ -219,13 +225,13 @@
1.17 return Node_localName(self._node)
1.18
1.19 def _parentNode(self):
1.20 - return self.impl.get_node(Node_parentNode(self._node), self)
1.21 + return self.impl.get_node_or_none(Node_parentNode(self._node), self)
1.22
1.23 def _previousSibling(self):
1.24 - return self.impl.get_node(Node_previousSibling(self._node), self)
1.25 + return self.impl.get_node_or_none(Node_previousSibling(self._node), self)
1.26
1.27 def _nextSibling(self):
1.28 - return self.impl.get_node(Node_nextSibling(self._node), self)
1.29 + return self.impl.get_node_or_none(Node_nextSibling(self._node), self)
1.30
1.31 def _doctype(self):
1.32 return self.impl.get_node(Node_doctype(self._node), self)
1.33 @@ -400,11 +406,14 @@
1.34 entities = {}
1.35 notations = {}
1.36
1.37 - #def isSameNode(self, other):
1.38 - # return self._node.nodePath() == other._node.nodePath()
1.39 + def isSameNode(self, other):
1.40 + return self == other
1.41
1.42 - #def __eq__(self, other):
1.43 - # return self._node.nodePath() == other._node.nodePath()
1.44 + def __eq__(self, other):
1.45 + return isinstance(other, Node) and libxml2mod.xmlXPathCmpNodes(self._node, other._node) == 0
1.46 +
1.47 + def __ne__(self, other):
1.48 + return not (self == other)
1.49
1.50 # 4DOM extensions to the usual PyXML API.
1.51 # NOTE: To be finished.
1.52 @@ -457,15 +466,11 @@
1.53 def _ownerDocument(self):
1.54 return self
1.55
1.56 - def _parentNode(self):
1.57 - return None
1.58 -
1.59 def __del__(self):
1.60 #print "Freeing document", self._node
1.61 libxml2mod.xmlFreeDoc(self._node)
1.62
1.63 ownerDocument = property(_ownerDocument)
1.64 - parentNode = property(_parentNode)
1.65
1.66 class DocumentType(object):
1.67
1.68 @@ -628,6 +633,12 @@
1.69 results.append(Node(node, impl, doc))
1.70 return results
1.71
1.72 +def getDOMImplementation():
1.73 +
1.74 + "Return the default DOM implementation."
1.75 +
1.76 + return default_impl
1.77 +
1.78 # Single instance of the implementation.
1.79
1.80 default_impl = Implementation()