Learning Pyrex with libxml2

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Victor Ng

    Learning Pyrex with libxml2

    Hi, I'm trying to learn how to use Pyrex by converting some of the
    libxml2 examples. I'm not having much luck - I can create a document,
    but any attempt to create nodes causes a segfault.

    The code I'm trying to port is io2.c (http://xmlsoft.org/examples/io2.c)

    I've commented the couple lines that cause a problem for me.

    thanks,
    vic


    ----


    cdef extern from "libxml/tree.h":
    ctypedef xmlDocPtr
    ctypedef xmlNodePtr
    ctypedef xmlNsPtr
    xmlDocPtr xmlNewDoc(unsig ned char *)
    xmlNodePtr xmlNewNode (xmlNsPtr, unsigned char *)
    void xmlNodeSetConte nt (xmlNodePtr, unsigned char *)
    xmlNodePtr xmlDocSetRootEl ement (xmlDocPtr, xmlNodePtr )
    void xmlDocDumpForma tMemory (xmlDocPtr, unsigned char **, int *, int )
    xmlNodePtr xmlNewChild (xmlNodePtr, xmlNsPtr, unsigned char *,
    unsigned char *)
    void xmlFreeDoc (xmlDocPtr)
    void xmlFree (xmlDocPtr)

    def testNewDoc():
    cdef xmlNodePtr n
    cdef xmlDocPtr doc
    cdef unsigned char* xmlbuff
    cdef int buffersize

    doc = xmlNewDoc(<unsi gned char *> "1.0")

    ## The following three lines cause a segfault
    # n = xmlNewNode(None , <unsigned char *> "root")
    # xmlNodeSetConte nt(n, <unsigned char *> "content")
    # xmlDocSetRootEl ement(doc, n)

    xmlDocDumpForma tMemory(doc, &xmlbuff, &buffersize, 1)
    xmlFrag = <char* > xmlbuff
    print "%d bytes in string" % len(xmlFrag)
    print "[%s]" % xmlFrag



    vic
Working...