2002-01-31 00:37:32 +08:00
|
|
|
import _libxml
|
|
|
|
|
2002-02-01 04:29:19 +08:00
|
|
|
#
|
|
|
|
# This class is the ancestor of all the Node classes. It provides
|
|
|
|
# the basic functionalities shared by all nodes (and handle
|
|
|
|
# gracefylly the exception), like name, navigation in the tree,
|
|
|
|
# doc reference and content access
|
|
|
|
#
|
2002-01-31 07:49:06 +08:00
|
|
|
class xmlCore:
|
2002-01-31 00:37:32 +08:00
|
|
|
def __init__(self, _obj=None):
|
|
|
|
if _obj != None:
|
|
|
|
self._o = _obj;
|
|
|
|
return
|
|
|
|
self._o = None
|
|
|
|
|
|
|
|
def __getattr__(self, attr):
|
|
|
|
if attr == "parent":
|
|
|
|
ret = _libxml.parent(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlNode(_obj=ret)
|
|
|
|
elif attr == "properties":
|
|
|
|
ret = _libxml.properties(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
2002-02-01 04:29:19 +08:00
|
|
|
return xmlAttr(_obj=ret)
|
2002-01-31 00:37:32 +08:00
|
|
|
elif attr == "children":
|
|
|
|
ret = _libxml.children(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlNode(_obj=ret)
|
|
|
|
elif attr == "last":
|
|
|
|
ret = _libxml.last(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlNode(_obj=ret)
|
|
|
|
elif attr == "next":
|
|
|
|
ret = _libxml.next(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlNode(_obj=ret)
|
|
|
|
elif attr == "prev":
|
|
|
|
ret = _libxml.prev(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlNode(_obj=ret)
|
|
|
|
elif attr == "content":
|
2002-02-03 07:18:22 +08:00
|
|
|
return _libxml.xmlNodeGetContent(self._o)
|
2002-01-31 00:37:32 +08:00
|
|
|
elif attr == "name":
|
|
|
|
return _libxml.name(self._o)
|
|
|
|
elif attr == "type":
|
|
|
|
return _libxml.type(self._o)
|
|
|
|
elif attr == "doc":
|
|
|
|
ret = _libxml.doc(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlDoc(_doc=ret)
|
|
|
|
raise AttributeError,attr
|
|
|
|
|
|
|
|
#
|
|
|
|
# Those are common attributes to nearly all type of nodes
|
|
|
|
#
|
|
|
|
def get_parent(self):
|
|
|
|
ret = _libxml.parent(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlNode(_obj=ret)
|
|
|
|
def get_children(self):
|
|
|
|
ret = _libxml.children(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlNode(_obj=ret)
|
|
|
|
def get_last(self):
|
|
|
|
ret = _libxml.last(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlNode(_obj=ret)
|
|
|
|
def get_next(self):
|
|
|
|
ret = _libxml.next(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlNode(_obj=ret)
|
2002-02-01 04:29:19 +08:00
|
|
|
def get_properties(self):
|
|
|
|
ret = _libxml.properties(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlAttr(_obj=ret)
|
|
|
|
def get_doc(self):
|
|
|
|
ret = _libxml.doc(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlDoc(_obj=ret)
|
2002-01-31 00:37:32 +08:00
|
|
|
def get_prev(self):
|
|
|
|
ret = _libxml.prev(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlNode(_obj=ret)
|
|
|
|
def get_content(self):
|
2002-02-01 04:29:19 +08:00
|
|
|
return _libxml.xmlNodeGetContent(self._o)
|
|
|
|
def getContent(self):
|
|
|
|
return _libxml.xmlNodeGetContent(self._o)
|
2002-01-31 00:37:32 +08:00
|
|
|
def get_name(self):
|
|
|
|
return _libxml.name(self._o)
|
|
|
|
def get_type(self):
|
|
|
|
return _libxml.type(self._o)
|
|
|
|
def get_doc(self):
|
|
|
|
ret = _libxml.doc(self._o)
|
|
|
|
if ret == None:
|
|
|
|
return None
|
|
|
|
return xmlDoc(_doc=ret)
|
|
|
|
def free(self):
|
|
|
|
_libxml.freeDoc(self._o)
|
|
|
|
|
2002-02-01 04:29:19 +08:00
|
|
|
#
|
|
|
|
# converters to present a nicer view of the XPath returns
|
|
|
|
#
|
|
|
|
def nodeWrap(o):
|
|
|
|
# TODO try to cast to the most appropriate node class
|
|
|
|
name = _libxml.name(o)
|
|
|
|
if name == "element" or name == "text":
|
|
|
|
return xmlNode(_obj=o)
|
|
|
|
if name == "attribute":
|
|
|
|
return xmlAttr(_obj=o)
|
|
|
|
if name[0:8] == "document":
|
|
|
|
return xmlDoc(_obj=o)
|
|
|
|
if name[0:8] == "namespace":
|
|
|
|
return xmlNs(_obj=o)
|
|
|
|
if name == "elem_decl":
|
|
|
|
return xmlElement(_obj=o)
|
|
|
|
if name == "attribute_decl":
|
|
|
|
return xmlAtribute(_obj=o)
|
|
|
|
if name == "entity_decl":
|
|
|
|
return xmlEntity(_obj=o)
|
|
|
|
if name == "dtd":
|
|
|
|
return xmlAttr(_obj=o)
|
|
|
|
return xmlNode(_obj=o)
|
|
|
|
|
|
|
|
def xpathObjectRet(o):
|
|
|
|
if type(o) == type([]) or type(o) == type(()):
|
|
|
|
ret = map(lambda x: nodeWrap(x), o)
|
|
|
|
return ret
|
|
|
|
return o
|
|
|
|
|
2002-02-02 01:56:45 +08:00
|
|
|
#
|
|
|
|
# register an XPath function
|
|
|
|
#
|
|
|
|
def registerXPathFunction(ctxt, name, ns_uri, f):
|
2002-02-02 20:19:46 +08:00
|
|
|
ret = _libxml.xmlRegisterXPathFunction(ctxt, name, ns_uri, f)
|
2002-02-02 01:56:45 +08:00
|
|
|
|
2002-01-31 07:49:06 +08:00
|
|
|
#
|
|
|
|
# Everything below this point is automatically generated
|
|
|
|
#
|
2002-02-01 04:29:19 +08:00
|
|
|
|