Java XML First Child Element firstChildTextContent(Element element, String name)

Here you can find the source of firstChildTextContent(Element element, String name)

Description

first Child Text Content

License

Apache License

Declaration

public static String firstChildTextContent(Element element, String name) 

Method Source Code

//package com.java2s;
/**//www  .  j  a va 2 s. c o  m
 *  Copyright 2005-2016 Red Hat, Inc.
 *
 *  Red Hat licenses this file to you under the Apache License, version
 *  2.0 (the "License"); you may not use this file except in compliance
 *  with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
 *  implied.  See the License for the specific language governing
 *  permissions and limitations under the License.
 */

import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Main {
    public static String firstChildTextContent(Element element, String name) {
        Element child = firstChild(element, name);
        if (child != null) {
            return child.getTextContent();
        }
        return null;
    }

    /**
    * Returns the first child element for the given name
    */
    public static Element firstChild(Element element, String name) {
        NodeList nodes = element.getChildNodes();
        if (nodes != null) {
            for (int i = 0, size = nodes.getLength(); i < size; i++) {
                Node item = nodes.item(i);
                if (item instanceof Element) {
                    Element childElement = (Element) item;

                    if (name.equals(childElement.getTagName())) {
                        return childElement;
                    }
                }
            }
        }
        return null;
    }

    private static String getTextContent(final Node node) {
        switch (node.getNodeType()) {
        case Node.ELEMENT_NODE:
        case Node.ATTRIBUTE_NODE:
        case Node.ENTITY_NODE:
        case Node.ENTITY_REFERENCE_NODE:
        case Node.DOCUMENT_FRAGMENT_NODE:
            return mergeTextContent(node.getChildNodes());
        case Node.TEXT_NODE:
        case Node.CDATA_SECTION_NODE:
        case Node.COMMENT_NODE:
        case Node.PROCESSING_INSTRUCTION_NODE:
            return node.getNodeValue();
        case Node.DOCUMENT_NODE:
        case Node.DOCUMENT_TYPE_NODE:
        case Node.NOTATION_NODE:
        default:
            return null;
        }
    }

    private static String mergeTextContent(final NodeList nodes) {
        StringBuilder buf = new StringBuilder();
        for (int i = 0; i < nodes.getLength(); i++) {
            Node n = nodes.item(i);
            final String text;

            switch (n.getNodeType()) {
            case Node.COMMENT_NODE:
            case Node.PROCESSING_INSTRUCTION_NODE:
                // ignore comments when merging
                text = null;
                break;
            default:
                text = getTextContent(n);
                break;
            }

            if (text != null) {
                buf.append(text);
            }
        }
        return buf.toString();
    }
}

Related

  1. firstChildElement(Element element, String childElementName)
  2. firstChildElement(Element parent)
  3. firstChildElement(Node node)
  4. firstChildElement(Node node)
  5. firstChildNodeWithName(org.w3c.dom.Node node, String name)
  6. firstElementNodeChild(Node n)
  7. firstNamedChild(Element el, String lName)
  8. firstTextChild(Element el)
  9. getDirectChild(Node fNode, String localName, String namespace)