[xml-bindings]libxml-python C-API question
- From: rm fabula de
- To: xml-bindings gnome org
- Subject: [xml-bindings]libxml-python C-API question
- Date: Thu, 6 Jun 2002 11:30:11 +0200
Hello everyone,
i'm trying to write a python (c-extension) module that needs to
modify libxml2 documents. I seem to run against a (unfortunately
invisible :) wall when i try to get my hands on the xmlNodePtr
from within a function that gets passed a node. Here's the
stripped-down code:
static PyObject *
quark2xml_parseString(PyObject *self, PyObject *args)
{
PyObject *pyobj_tree;
xmlChar *buffer;
xmlNodePtr doc = NULL;
xmlNodePtr tmp = NULL;
if (!PyArg_ParseTuple(args, (char *)"Os:parseString",
&pyobj_tree, &buffer))
return NULL;
doc = (xmlNodePtr) PyxmlNode_Get(pyobj_tree);
/* printf-school of debugging :) */
fprintf(stderr, "Node looks like %s \n", PyObject_REPR(pyobj_tree));
xmlNodeAddContent(doc, buffer);
Py_INCREF(pyobj_tree);
return(pyobj_tree);
}
Now, as you might have realized, most of the code is snarfed from the
python bindings code (i copied libxml_wrap.h). Still, if i call the function
from python the node/document doesn't change. Worse: if i add a call to
xmlDebugDumpNode() the whole thing segfaults.
I tried using:
doc = (xmlNodePtr) PyCObject_AsVoidPtr(doc)
which _should_ do the unwrapping, but that call returns NULL.
Any pointers to where to start looking for my stupidity?
Ralf Mattes
PS: since i would guess that libxml2-python might be often used from other
modules, are there any plans to add a public C interface to it?
doc = (xmlNodePtr) PyCObject_AsVoidPtr(doc);
[Date Prev][
Date Next] [Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]