Introduction

This website is all about Xill 3, our newest version of the Xill language. 

If you have worked with Xill 2, which was used in content tools 2.x, you can use the table below to familiarize yourself with the functions that replace the functions you knew.

Conversion table

Here is a list that tells you how to replace every Xill 2 function in Xill 3 code.

Function Replacement Notes
click Web.click
curl XURL package or Web.loadPage depending on usage
download Web.download
focus Web.focus
getframe Web.switchFrame
input Web.input
loadpage Web.loadPage
stringtopage Web.fromString
pageinfo Web.pageInfo
rawhttp XURL depending on usage. see curl
removecookie Web.removeCookie
select Web.select
setcookie Web.setCookie
xmltostring Web.getSource or XML.toString
webclient Integrated into second parameter of Web.loadPage
classifier - Use classifier web service
classify - Use classifier web service
jsontolist System.parseJSON
listtocsv - Workaround: Build custom function
listtojson System.toJSON
listtostring -
listtoxml - No replacement. Build xml with XML.insertNode or by String editing
tonumber - There are no different variable types like strings and numbers in Xill 3. A variable with a string value always has a number value as well
tostring - If you want to force a number string (like "02") to stay a string, use the '@'-operator, like @"02" or @number.
stringtoxml XML.fromString
stringtopage Web.fromString
xmltolist -
database Database.connect
getobject Database.getObject
importcsv - Workaround: System.exec and a command like 'LOAD DATA LOCAL INFILE '[path]' INTO TABLE […]'
storeobject Database.storeObject
sqlescape Database.escape
query Database.query or Database.rawQuery
changedate Date.change
date Date.now, Date.of or Date.parse
datediff Date.diff
dateinfo Date.info
datetostring Date.format or Date.localizedFormat
timestamp requested as feature Workaround: var Date=Date.now(); var info=Date.info(date); var timestamp=info.InstantSeconds :: "000";
elastic search functions under active development Depending on what you want, a more manual approach using MongoDB might be a good alternative
ampersanddecode Encode.escapeXML
ampersandencode Decode.unescapeXML
base64decode Encode.fileToBase64 or Encode.stringToBase64
base64encode Encode.toBase64
md5 Hash.toMD5
urldecode Decode.fromPercent
urlencode Encode.toPercent
createexcel Excel.createWorkbook
createsheet Excel.createSheet
getcell Excel.getCell
getsheet Excel.loadSheet
setcell Excel.setCell
openexcel Excel.loadWorkbook
copyfile File.copy
createfolder File.createFolder
deletefile File.delete
deletefolder File.delete
download Web.download
exiftool Exiftool.scanFile
fileexists File.exists
fileinfo Exiftool.scanFile
filesize File.getSize
listfiles File.iterateFiles
listfolders File.iterateFolders
loaddata File and Stream packages
metadatafromdocument Exiftool.scanFile Note: returned info is formatted differently
savedata Stream.write No simple 1-to-1 translation, because we use streams noow. File.openWrite will also be needed.
textfromdocument not available at the moment Workaround: see https://support.xillio.com/support/discussions/topics/6000033142
break break without parentheses ()
continue continue without parentheses ()
callbot callbot
foreach foreach syntax changed slighty: https://support.xillio.com/support/solutions/articles/6000061427
geterror - errors are returned where applicable
global - Variables declared at robot level are available throughout the robot. However, it is recommended to keep every variable scoped in a function.
help -
if if no change
log System.print
return return slightly different syntax
routine function changed syntax, removed optional parameters: https://support.xillio.com/support/solutions/articles/6000061441
setprogress -
unset Collection.remove
variabletype System.typeOf
version System.version
wait System.wait
while while
contains Collection.contains or String.contains
extractlist String.allMatches
length String.length or Collection.length
listduplicate Collection.duplicate
listreverse Collection.sort
listsort Collection.sort
split String.split
mongo_connect Mongo.connect
mongo_count Mongo.count
mongo_delete Mongo.remove
mongo_drop Mongo.drop
mongo_find Mongo.find
mongo_get Mongo.objectId + Mongo.findOne
mongo_store Mongo.insert but rather Document.save if possible
mongo_update Mongo.update but rather Document.save if possible
abs Math.abs
evaluate - This function was mainly used in 'hacky' ways. It should not be necessary.
hungarianalgorithm Math.hungarianAlgorithm
random Math.random
runprogram System.exec
round Math.round
systeminfo System.info
worddistance String.worddistance
es_regexfilter not available at the moment
matches String.matches
regex String.regex
replace String.replace
absoluteurl String.absoluteURL
endswith String.endsWith
format String.format
formatxml not available at the moment
indexof String.indexOf
lowercase String.toLower
repeat String.repeat
startswith String.startswith
substring String.substring
trim String.trim
uppercase String.toUpper
addsubnode XML.moveNode (yes, really) or XML.insertNode
copynode - Workaround with XML.toString, XML.fromString and then XML.moveNode
loadxml XML.fromFile
movenode XML.moveNode
removeattribute XML.removeAttribute
removenode XML.removeNode
replacenode XML.replaceNode
setattribute XML.setAttribute
tidy Web.tidy
xpath XML.xPath or Web.xPath
xsdcheck XML.xsdCheck