/** * Copyright 2012 Comcast Corporation * * Licensed 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. */ package com.comcast.cmb.common.util; import java.io.ByteArrayInputStream; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class XmlUtil { public static Element buildDoc(String content) throws Exception { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document dom = db.parse(new ByteArrayInputStream(content.getBytes("UTF-8"))); Element docEle = dom.getDocumentElement(); return docEle; } public static List<Element> getChildNodes(Element ele, String tagName) { List<Element> elements = new ArrayList<Element>(); if (ele == null) { return elements; } NodeList nl = ele.getChildNodes(); if (nl != null && nl.getLength() > 0) { for (Integer i=0; i<nl.getLength(); i++) { Node node = nl.item(i); if (node instanceof Element && ((Element)node).getNodeName().equals(tagName)) { elements.add((Element)node); } } } return elements; } public static List<Element> getChildNodes(Element ele) { List<Element> elements = new ArrayList<Element>(); if (ele == null) { return elements; } NodeList nl = ele.getChildNodes(); if (nl != null && nl.getLength() > 0) { for (Integer i=0; i<nl.getLength(); i++) { Node node = nl.item(i); if (node instanceof Element) { elements.add((Element)node); } } } return elements; } public static List<Element> getCurrentLevelChildNodes(Element ele, String tagName) { List<Element> elements = new ArrayList<Element>(); if (ele == null) { return elements; } NodeList nl = ele.getChildNodes(); if (nl != null && nl.getLength() > 0) { for (Integer i=0; i<nl.getLength(); i++) { Node node = nl.item(i); if (node instanceof Element && ((Element)node).getNodeName().equals(tagName)) { elements.add((Element)node); } } } return elements; } public static String getCurrentLevelTextValue(Element ele, String tagName) { String textVal = ""; List<Element> nl = getCurrentLevelChildNodes(ele, tagName); if (nl != null && nl.size() == 1) { Element el = (Element)nl.get(0); if (el.getFirstChild() != null) { textVal = el.getFirstChild().getNodeValue(); } } return textVal; } public static Integer getCurrentLevelIntValue(Element ele, String tagName) { String textToInt = getCurrentLevelTextValue(ele,tagName); Integer valueInteger = null; if (textToInt != null) { valueInteger = new Integer(textToInt); } return valueInteger; } public static Double getCurrentLevelDoubleValue(Element ele, String tagName) { String textToDouble = getCurrentLevelTextValue(ele,tagName); Double valueDouble = null; if (textToDouble != null) { valueDouble = new Double(textToDouble); } return valueDouble; } public static boolean getCurrentLevelBooleanValue(Element ele, String tagName) { return Boolean.parseBoolean(getCurrentLevelTextValue(ele, tagName)); } public static String getCurrentLevelAttributeTextValue(Element ele, String attribute) { if (ele == null || attribute == null) { return null; } else { return ele.getAttribute(attribute); } } public static Integer getCurrentLevelAttributeIntValue(Element ele, String attribute) { Integer attributeInt = null; if (ele == null || attribute == null) { return attributeInt; } String attributeString = ele.getAttribute(attribute); if (attributeString != null) { attributeInt = new Integer(attributeString); } return attributeInt; } }