getElementsByTagName
method).
* @param ele the DOM element to analyze
* @param childEleName the child element name to look for
* @return a List of child org.w3c.dom.Element
instances
* @see org.w3c.dom.Element
* @see org.w3c.dom.Element#getElementsByTagName
*/
public static List getChildElementsByTagName(Element ele, String childEleName) {
NodeList nl = ele.getChildNodes();
List childEles = new ArrayList();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (node instanceof Element && nodeNameEquals(node, childEleName)) {
childEles.add(node);
}
}
return childEles;
}
/**
* Utility method that returns the first child element
* identified by its name.
* @param ele the DOM element to analyze
* @param childEleName the child element name to look for
* @return the org.w3c.dom.Element
instance,
* or null
if none found
*/
public static Element getChildElementByTagName(Element ele, String childEleName) {
NodeList nl = ele.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (node instanceof Element && nodeNameEquals(node, childEleName)) {
return (Element) node;
}
}
return null;
}
/**
* Utility method that returns the first child element value
* identified by its name.
* @param ele the DOM element to analyze
* @param childEleName the child element name to look for
* @return the extracted text value,
* or null
if no child element found
*/
public static String getChildElementValueByTagName(Element ele, String childEleName) {
Element child = getChildElementByTagName(ele, childEleName);
return (child != null ? getTextValue(child) : null);
}
/**
* Namespace-aware equals comparison. Returns true
if either
* {@link Node#getLocalName} or {@link Node#getNodeName} equals desiredName
,
* otherwise returns false
.
*/
public static boolean nodeNameEquals(Node node, String desiredName) {
return (desiredName.equals(node.getNodeName()) || desiredName.equals(node.getLocalName()));
}
/**
* Extract the text value from the given DOM element, ignoring XML comments.
* Appends all CharacterData nodes and EntityReference nodes * into a single String value, excluding Comment nodes. * @see CharacterData * @see EntityReference * @see Comment */ public static String getTextValue(Element valueEle) { StringBuffer value = new StringBuffer(); NodeList nl = valueEle.getChildNodes(); for (int i = 0; i < nl.getLength(); i++) { Node item = nl.item(i); if ((item instanceof CharacterData && !(item instanceof Comment)) || item instanceof EntityReference) { value.append(item.getNodeValue()); } } return value.toString(); } }