package com.revolsys.record.io.format.xml; import java.util.function.Consumer; import javax.xml.namespace.NamespaceContext; import javax.xml.namespace.QName; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import com.revolsys.util.Property; public interface XmlUtil { static void forEachElement(final Element parentElement, final Consumer<Element> action) { final NodeList childNodes = parentElement.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { final Node childNode = childNodes.item(i); if (childNode instanceof Element) { final Element element = (Element)childNode; action.accept(element); } } } static void forEachElement(final Element parentElement, final String elementName, final Consumer<Element> action) { final NodeList childNodes = parentElement.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { final Node childNode = childNodes.item(i); if (childNode instanceof Element) { final Element element = (Element)childNode; final String tagName = element.getTagName(); if (elementName.equals(tagName)) { action.accept(element); } } } } static void forFirstElement(final Element parentElement, final String elementName, final Consumer<Element> action) { final Element element = getFirstElement(parentElement, elementName); if (element != null) { action.accept(element); } } static double getAttributeDouble(final Element element, final String attributeName, final double defaultValue) { final String text = element.getAttribute(attributeName); if (Property.isEmpty(text)) { return defaultValue; } else { return Double.parseDouble(text); } } static int getAttributeInt(final Element element, final String attributeName, final int defaultValue) { final String text = element.getAttribute(attributeName); if (Property.isEmpty(text)) { return defaultValue; } else { return Integer.parseInt(text); } } static Element getFirstElement(final Element parentElement, final String elementName) { final NodeList childNodes = parentElement.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { final Node childNode = childNodes.item(i); if (childNode instanceof Element) { final Element element = (Element)childNode; final String tagName = element.getTagName(); if (elementName.equals(tagName)) { return element; } } } return null; } static String getFirstElementAttribute(final Element parentElement, final String elementName, final String attributeName) { final Element element = getFirstElement(parentElement, elementName); if (element == null) { return null; } else { return element.getAttribute(attributeName); } } static String getFirstElementAttribute(final Element parentElement, final String elementName, final String attributeNamespace, final String attributeName) { final Element element = getFirstElement(parentElement, elementName); if (element == null) { return null; } else { return element.getAttributeNS(attributeNamespace, attributeName); } } static Double getFirstElementDouble(final Element parentElement, final String elementName) { final String text = getFirstElementText(parentElement, elementName); if (text == null) { return null; } else { return Double.parseDouble(text); } } static double getFirstElementDouble(final Element parentElement, final String elementName, final double defaultValue) { final String text = getFirstElementText(parentElement, elementName); if (text == null) { return defaultValue; } else { return Double.parseDouble(text); } } static Integer getFirstElementInt(final Element parentElement, final String elementName) { final String text = getFirstElementText(parentElement, elementName); if (text == null) { return null; } else { return Integer.parseInt(text); } } static int getFirstElementInt(final Element parentElement, final String elementName, final int defaultValue) { final String text = getFirstElementText(parentElement, elementName); if (text == null) { return defaultValue; } else { return Integer.parseInt(text); } } static String getFirstElementText(final Element parentElement, final String elementName) { final Element element = getFirstElement(parentElement, elementName); if (element == null) { return null; } else { return element.getTextContent(); } } static QName getXmlQName(final NamespaceContext context, final String value) { if (value == null) { return null; } else { final int colonIndex = value.indexOf(':'); if (colonIndex == -1) { return new QName(value); } else { final String prefix = value.substring(0, colonIndex); final String name = value.substring(colonIndex + 1); final String namespaceUri = context.getNamespaceURI(prefix); return new QName(namespaceUri, name, prefix); } } } }