Question

I am having this strange problem of parsing an xml through XMLSlurper in groovy and it shows the size as 0. Cannot figure out why.

My xml file looks like:

<?xml version="1.0" encoding="iso-8859-1"?>
<sites>
    <site name="OctUK">
        <property name="warName">OctUKbuild-Deployable</property>
    </site>
    <site name="GbsJP">
        <property name="warName">GbsJPbuild-Deployable</property>
    </site>
</sites>

Code:

findSite("${project.GTA_BUILD_HOME}/platforms/pos/config/pos-sites.xml")

//Passed the path of the xml file to the method below:
GPathResult findSite(String sitesXml) {
    xmlConfig = new XmlSlurper().parse(new File(sitesXml))  
    def siteGPath = xmlConfig.sites.site.findAll
    // Check that a POS-sites.xml is valid
    assert siteGPath.size() != 0, 'Error: no site found'
    return(siteGPath)
}

The method fails with the error saying Error: no site found, because it is giving the result of siteGPath as 0. Not sure why it is giving the result as 0. It should have the size as 2.

Is there anything wrong I am doing. Any help is much appreciated. I am stuck at this point.

Was it helpful?

Solution

You don't need sites when looking at the xmlConfig object.

sites is the root node, so is implied, try:

assert xmlConfig.site.size() == 2

Also, xmlConfig.site is a instance of NodeChildren, but you seem to be declaring a return type of GPathResult

And I'm not sure what's missing from the end of your findAll call, as that should take a Closure, or empty parentheses

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top