Returns an array of text values of a child element.
import java.util.ArrayList;
import java.util.List;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
public class Utils {
/**
* <p>Returns an array of text values of a child element. Returns
* <code>null</code> if there is no child element found.</p>
*
* @param parent parent element
* @param name name of the child element
* @return text value
*/
public static String[] getChildElementTextArr(Element parent, String name)
{
// Get all the elements
List children = getChildElementsByName(parent, name);
String str[] = new String[children.size()];
for(int i = 0; i < children.size(); i++) {
Node child = (Node) children.get(i);
StringBuffer buf = new StringBuffer();
NodeList nodes = child.getChildNodes();
for(int j = 0; j < nodes.getLength(); j++) {
Node node = nodes.item(j);
if(node.getNodeType() == Node.TEXT_NODE ||
node.getNodeType() == Node.CDATA_SECTION_NODE) {
Text text = (Text) node;
buf.append(text.getData().trim());
}
}
str[i] = buf.toString();
}
return str;
}
/**
* <p>Returns a list of child elements with the given
* name. Returns an empty list if there are no such child
* elements.</p>
*
* @param parent parent element
* @param name name of the child element
* @return child elements
*/
public static List getChildElementsByName(Element parent, String name)
{
List elements = new ArrayList();
NodeList children = parent.getChildNodes();
for(int i = 0; i < children.getLength(); i++) {
Node node = children.item(i);
if(node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
if(element.getTagName().equals(name)) {
elements.add(element);
}
}
}
return elements;
}
}
Related examples in the same category