public Iterator<String> getChildProperties(String name) {
        String[] propName = parsePropertyName(name);
        // Search for this property by traversing down the XML hierarchy,
        // stopping one short.
        ArrayList<String> props = new ArrayList<>();
        final Lock readLock = readWriteLock.readLock();
        readLock.lock();
        try {
            Element element = document.getRootElement();
            for (int i = 0; i < propName.length - 1; i++) {
                element = element.element(propName[i]);
                if (element == null) {
                    // This node doesn't match this part of the property name which
                    // indicates this property doesn't exist so return empty array.
                    return Collections.emptyIterator();
                }
            }
            // We found matching property, return values of the children.
            Iterator<Element> iter = element.elementIterator(propName[propName.length - 1]);
            Element prop;
            String value;
            while (iter.hasNext()) {
                prop = iter.next();
                value = prop.getText();
                // check to see if the property is marked as encrypted
                if (JiveGlobals.isPropertyEncrypted(name) && Boolean.parseBoolean(prop.attribute(ENCRYPTED_ATTRIBUTE).getText())) {
                    value = JiveGlobals.getPropertyEncryptor().decrypt(value);
                }
                props.add(value);
            }
        } finally {
            readLock.unlock();
        }
        return props.iterator();
    }
Return all values who's path matches the given property
name as a String array, or an empty array if the if there
are no children. This allows you to retrieve several values
with the same property name. For example, consider the
XML file entry:
<pre>
&lt;foo&gt;
    &lt;bar&gt;
        &lt;prop&gt;some value&lt;/prop&gt;
        &lt;prop&gt;other value&lt;/prop&gt;
        &lt;prop&gt;last value&lt;/prop&gt;
    &lt;/bar&gt;
&lt;/foo&gt;
</pre>
If you call getProperties("foo.bar.prop") will return a string array containing
{"some value", "other value", "last value"}.

@param name the name of the property to retrieve
@return all child property values for the given node name.
xmppserver/src/main/java/org/jivesoftware/util/XMLProperties.java