1.1 --- a/libxml2dom/__init__.py Sun May 15 19:24:38 2005 +0000
1.2 +++ b/libxml2dom/__init__.py Sun May 15 19:25:43 2005 +0000
1.3 @@ -6,7 +6,6 @@
1.4
1.5 __version__ = "0.2"
1.6
1.7 -import xml.dom
1.8 import libxml2
1.9 from libxml2dom.macrolib import *
1.10 from libxml2dom.macrolib import \
1.11 @@ -75,6 +74,17 @@
1.12 A DOM-style wrapper around libxml2mod objects.
1.13 """
1.14
1.15 + ATTRIBUTE_NODE = xml.dom.Node.ATTRIBUTE_NODE
1.16 + COMMENT_NODE = xml.dom.Node.COMMENT_NODE
1.17 + DOCUMENT_NODE = xml.dom.Node.DOCUMENT_NODE
1.18 + DOCUMENT_TYPE_NODE = xml.dom.Node.DOCUMENT_TYPE_NODE
1.19 + ELEMENT_NODE = xml.dom.Node.ELEMENT_NODE
1.20 + ENTITY_NODE = xml.dom.Node.ENTITY_NODE
1.21 + ENTITY_REFERENCE_NODE = xml.dom.Node.ENTITY_REFERENCE_NODE
1.22 + NOTATION_NODE = xml.dom.Node.NOTATION_NODE
1.23 + PROCESSING_INSTRUCTION_NODE = xml.dom.Node.PROCESSING_INSTRUCTION_NODE
1.24 + TEXT_NODE = xml.dom.Node.TEXT_NODE
1.25 +
1.26 def __init__(self, node, ownerDocument=None):
1.27 self._node = node
1.28 self.ownerDocument = ownerDocument
1.29 @@ -113,7 +123,7 @@
1.30 return Node_localName(self._node)
1.31
1.32 def _parentNode(self):
1.33 - return Node_parentNode(self._node)
1.34 + return Node(Node_parentNode(self._node), self.ownerDocument)
1.35
1.36 def _previousSibling(self):
1.37 return Node(Node_previousSibling(self._node), self.ownerDocument)
1.38 @@ -224,7 +234,22 @@
1.39 # NOTE: To be finished.
1.40
1.41 def xpath(self, expr, variables=None, namespaces=None):
1.42 - return [Node(_node, self.ownerDocument) for _node in Node_xpath(self._node, expr, variables, namespaces)]
1.43 + result = Node_xpath(self._node, expr, variables, namespaces)
1.44 + if hasattr(result, "len"):
1.45 + return [Node(_node, self.ownerDocument) for _node in result]
1.46 + else:
1.47 + return result
1.48 +
1.49 + # Convenience methods.
1.50 +
1.51 + def toString(self, encoding=None):
1.52 + return toString(self, encoding)
1.53 +
1.54 + def toStream(self, stream, encoding=None):
1.55 + toStream(self, stream, encoding)
1.56 +
1.57 + def toFile(self, f, encoding=None):
1.58 + toFile(self, f, encoding)
1.59
1.60 # Document housekeeping mechanisms.
1.61
1.62 @@ -278,4 +303,13 @@
1.63 def toFile(node, f, encoding=None):
1.64 Node_toFile(node.as_native_node(), f, encoding)
1.65
1.66 +def adoptNodes(nodes):
1.67 + if len(nodes) == 0:
1.68 + return []
1.69 + doc = Document(libxml2mod.doc(nodes[0]))
1.70 + results = []
1.71 + for node in nodes:
1.72 + results.append(Node(node, doc))
1.73 + return results
1.74 +
1.75 # vim: tabstop=4 expandtab shiftwidth=4