NodeList conditionNodes = conditions.getElementsByTagName("condition"); int length = conditionNodes.getLength();
List conditionNodes = XMLUtil.getChildElements(conditions, "condition"); int length = conditionNodes.size();
    protected void init(Element join) {        try {            setId(Integer.parseInt(join.getAttribute("id")));        } catch (Exception ex) {            throw new IllegalArgumentException("Invalid join id value " + join.getAttribute("id"));        }        // get conditions        Element conditions = XMLUtil.getChildElement(join, "conditions");        conditionType = conditions.getAttribute("type");        NodeList conditionNodes = conditions.getElementsByTagName("condition");        int length = conditionNodes.getLength();        for (int i = 0; i < length; i++) {            Element condition = (Element) conditionNodes.item(i);            ConditionDescriptor conditionDescriptor = new ConditionDescriptor(condition);            conditionDescriptor.setParent(this);            this.conditions.add(conditionDescriptor);        }        //<unconditional-result status="Underway" owner="test" step="2"/>        Element resultElement = (Element) join.getElementsByTagName("unconditional-result").item(0);        result = new ResultDescriptor(resultElement);        result.setParent(this);    }