view R/rdyncall/demo/expat.R @ 28:edbbd467f50a

python binding: - update to dyncall 1.1 - Python 3 support (supports both, Python 2 and 3) - using the Capsule API over PyCObject, when available - support for python unicode strings (for both, Python 2 and 3) - doc cleanup ruby binding: - doc cleanup
author Tassilo Philipp
date Tue, 07 Apr 2020 21:16:37 +0200
parents 0cfcc391201f
children
line wrap: on
line source

# Package: rdyncall 
# File: demo/expat.R
# Description: Parsing XML using expat and callbacks 

dynport(expat)

parser <- XML_ParserCreate(NULL)

onXMLStartTag <- function(user,tag,attr)
{
  # as.character( as.cstrptrarray(attr) )
  cat("Start tag:", tag, "\n")  
}

onXMLEndTag <- function(user,tag)
{
  cat("End tag:",tag, "\n")  
}

cb.onstart <- new.callback("pZp)v", onXMLStartTag )
cb.onstop  <- new.callback("pZ)v",  onXMLEndTag )

XML_SetElementHandler( parser, cb.onstart, cb.onstop ) 

text <- "
<hello>
  <world>
  </world>
</hello>
"

XML_Parse( parser, text, nchar(text), 1)