public String[] getProperties(Element element, String name) {
        String[] propName = parsePropertyName(name);

        // Search for this property by traversing down the XML hierarchy, stopping one short.
        int i = propName[0].equals(element.getName()) ? 1 : 0;
        for (; 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 new String[]{};
            }
        }
        // We found matching property, return names of children.
        Iterator<Element> iter = element.elementIterator(propName[propName.length - 1]);
        ArrayList<String> props = new ArrayList<>();
        while (iter.hasNext()) {
            Element e = iter.next();
            props.add(e.getName());
        }
        String[] childrenNames = new String[props.size()];
        return props.toArray(childrenNames);
    }
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. You MAY NOT use the attribute
markup (using a ':' in the last element name) with this call.
<p>
getProperties() allows you to retrieve several values with the same property name.
For example, consider the XML file entry:</p>
<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 element the element to get the properties for
@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/ElementUtil.java