Java Tutorial/XML/DOM Element

Материал из Java эксперт
Перейти к: навигация, поиск

Содержание

Add an entity to a specified Element.

   <source lang="java">

import org.w3c.dom.Document; import org.w3c.dom.Element; public class Utils {

 /**
  * Add an entity to a specified Element.
  *    (eg DomUtils.addEntity(element, "nbsp");)
  * @param element the containing element
  * @param entity the entity to add
  */
 public static void addEntity(Element element, String entity) {
   element.appendChild(element.getOwnerDocument().createEntityReference(entity));
 }

}</source>





Add a new element to the given parent

   <source lang="java">

import org.w3c.dom.Document; import org.w3c.dom.Element; public class Utils {

 /**
  * Add a new element to the given parent
  * @param parent the parent Element
  * @param name the child name
  * @return new Element
  */
 public static Element createElement(Element parent, String name) {
   Document document;
   Element element;
   document = parent.getOwnerDocument();
   element  = document.createElement(name);
   parent.appendChild(element);
   return element;
 }

}</source>





Add Text object to an Element.

   <source lang="java">

import org.w3c.dom.Document; import org.w3c.dom.Element; public class Utils {

 /**
  * Add Text object to an Element.
  * @param element the containing element
  * @param text the text to add
  */
 public static void addText(Element element, String text) {
   element.appendChild(element.getOwnerDocument().createTextNode(text));
 }

}</source>





Build a QName from the element name

   <source lang="java">

import javax.xml.namespace.QName; import org.w3c.dom.Element; public class Utils {

 /**
  * Build a QName from the element name
  * @param el
  * @return
  */
 public static QName getQName(Element el) {
     if (el == null) {
         return null;
     } else if (el.getPrefix() != null) {
         return new QName(el.getNamespaceURI(), el.getLocalName(), el.getPrefix());
     } else {
         return new QName(el.getNamespaceURI(), el.getLocalName());
     }
 }

}</source>





Copy an XML document

   <source lang="java">

import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; public class Utils {

 /**
  * Copy an XML document, adding it as a child of the target document root
  * @param source Document to copy
  * @param target Document to contain copy
  */
 public static void copyDocument(Document source, Document target)
 {
   Node node = target.importNode(source.getDocumentElement(), true);
   target.getDocumentElement().appendChild(node);
 }

}</source>





Create a new element

   <source lang="java">

import org.w3c.dom.Document; import org.w3c.dom.Element; public class Utils {

 /**
  * Create a new element
  * @param document Document to contain the new element
  * @param name the element name
  * @return new Element
  */
 public static Element createElement(Document document, String name) {
   Element element;
   return document.createElement(name);
 }

}</source>





Create Empty DOM Document

   <source lang="java">

import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static Document newEmptyDocument() {
   DocumentBuilderFactory factory = null;
   DocumentBuilder builder = null;
   Document ret;
   try {
     factory = DocumentBuilderFactory.newInstance();
     builder = factory.newDocumentBuilder();
   } catch (ParserConfigurationException e) {
     e.printStackTrace();
   }
   ret = builder.newDocument();
   return ret;
 }

}</source>





Create New Element And Set Attribute

   <source lang="java">

import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static Element createNewElementAndSetAndAttribute(Document document,
     Element parent, String childElement, String childValue,
     String attributeName, String attributeValue) {
   Element child = createNewElementAndSet(document, parent, childElement,
       childValue);
   child.setAttribute(attributeName, attributeValue);
   return child;
 }
 public static Element createNewElementAndSet(Document document,
     Element parent, String childElement, String childValue) {
   Element child = (Element) document.createElement(childElement);
   parent.appendChild(child);
   child.setNodeValue(childValue);
   child.appendChild(document.createTextNode(childValue));
   return child;
 }

}</source>





Document To String

   <source lang="java">

/*

* Copyright  2003-2008 The Apache Software Foundation.
*
*  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.
*
*/

import java.io.ByteArrayOutputStream; import java.io.OutputStream; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Document; import org.w3c.dom.Element; public class Main {

 public static void ElementToStream(Element element, OutputStream out) {
   try {
     DOMSource source = new DOMSource(element);
     StreamResult result = new StreamResult(out);
     TransformerFactory transFactory = TransformerFactory.newInstance();
     Transformer transformer = transFactory.newTransformer();
     transformer.transform(source, result);
   } catch (Exception ex) {
   }
 }
 public static String DocumentToString(Document doc) {
   ByteArrayOutputStream baos = new ByteArrayOutputStream();
   ElementToStream(doc.getDocumentElement(), baos);
   return new String(baos.toByteArray());
 }

}</source>





Find All Elements By Tag Name Name Space

   <source lang="java">

/**

* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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 java.util.LinkedList; import java.util.List; import javax.xml.namespace.QName; import org.w3c.dom.Element; import org.w3c.dom.Node; /**

* Few simple utils to read DOM. This is originally from the Jakarta Commons
* Modeler.
* 
* @author Costin Manolache
*/

public class Utils {

 public static List<Element> findAllElementsByTagNameNS(Element elem, String nameSpaceURI,
     String localName) {
   List<Element> ret = new LinkedList<Element>();
   findAllElementsByTagNameNS(elem, nameSpaceURI, localName, ret);
   return ret;
 }
 private static void findAllElementsByTagName(Element el, String tagName, List<Element> elementList) {
   if (tagName.equals(el.getTagName())) {
     elementList.add(el);
   }
   Element elem = getFirstElement(el);
   while (elem != null) {
     findAllElementsByTagName(elem, tagName, elementList);
     elem = getNextElement(elem);
   }
 }
 private static void findAllElementsByTagNameNS(Element el, String nameSpaceURI, String localName,
     List<Element> elementList) {
   if (localName.equals(el.getLocalName()) && nameSpaceURI.contains(el.getNamespaceURI())) {
     elementList.add(el);
   }
   Element elem = getFirstElement(el);
   while (elem != null) {
     findAllElementsByTagNameNS(elem, nameSpaceURI, localName, elementList);
     elem = getNextElement(elem);
   }
 }
 public static Element getFirstElement(Node parent) {
   Node n = parent.getFirstChild();
   while (n != null && Node.ELEMENT_NODE != n.getNodeType()) {
     n = n.getNextSibling();
   }
   if (n == null) {
     return null;
   }
   return (Element) n;
 }
 public static Element getNextElement(Element el) {
   Node nd = el.getNextSibling();
   while (nd != null) {
     if (nd.getNodeType() == Node.ELEMENT_NODE) {
       return (Element) nd;
     }
     nd = nd.getNextSibling();
   }
   return null;
 }

}</source>





Find Element And Set Or Create And Set

   <source lang="java">

import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static Element findElementAndSetElseCreateAndSet(Document document,
     Element parent, String child, boolean value) {
   return findElementAndSetElseCreateAndSet(document, parent, child, ""
       + value);
 }
 public static Element findElementAndSetElseCreateAndSet(Document document,
     Element parent, String child, float value) {
   return findElementAndSetElseCreateAndSet(document, parent, child, ""
       + value);
 }
 public static Element findElementAndSetElseCreateAndSet(Document document,
     Element parent, String element, Date date) {
   return findElementAndSetElseCreateAndSet(document, parent, element,
       getDateString(date));
 }
 public static Element findElementAndSetElseCreateAndSet(Document document,
     Element parent, String child, String value) {
   NodeList nl = parent.getElementsByTagName(child);
   if (nl.getLength() == 0) {
     parent.appendChild(document.createElement(child));
   }
   Element ret = (Element) parent.getElementsByTagName(child).item(0);
   if (ret.getFirstChild() != null) {
     ret.removeChild(ret.getFirstChild());
   }
   ret.appendChild(document.createTextNode(value));
   return ret;
 }

}</source>





Find Element Or Container

   <source lang="java">

import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static Element findElementOrContainer(Document document,
     Element parent, String element) {
   NodeList nl = parent.getElementsByTagName(element);
   if (nl.getLength() == 0) {
     return null;
   }
   return (Element) nl.item(0);
 }

}</source>





Finds and returns the first child element node.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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.
*/

public class Main {

 /** Finds and returns the first child element node. */
 public static Element getFirstChildElement(Node parent) {
     
     // search for node
     Node child = parent.getFirstChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             return (Element)child;
         }
         child = child.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getFirstChildElement(Node):Element

}</source>





Finds and returns the first child node with the given name and attribute name, value pair.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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.
*/

public class Main {

 /**
  * Finds and returns the first child node with the given name and
  * attribute name, value pair.
  */
 public static Element getFirstChildElement(Node   parent,
         String elemName,
         String attrName,
         String attrValue) {
     
     // search for node
     Node child = parent.getFirstChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             Element element = (Element)child;
             if (element.getNodeName().equals(elemName) &&
                     element.getAttribute(attrName).equals(attrValue)) {
                 return element;
             }
         }
         child = child.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getFirstChildElement(Node,String,String,String):Element

}</source>





Finds and returns the last child element node.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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.
*/

public class Main {

 /** Finds and returns the last child element node. 
  *  Overload previous method for non-Xerces node impl.
  */
 public static Element getLastChildElement(Node parent) {
     
     // search for node
     Node child = parent.getLastChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             return (Element)child;
         }
         child = child.getPreviousSibling();
     }
     
     // not found
     return null;
     
 } // getLastChildElement(Node):Element

}</source>





Finds and returns the last child node with the given name and attribute name, value pair.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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.
*/

public class Main {

 /**
  * Finds and returns the last child node with the given name and
  * attribute name, value pair.
  */
 public static Element getLastChildElement(Node   parent,
         String elemName,
         String attrName,
         String attrValue) {
     
     // search for node
     Node child = parent.getLastChild();
     while (child != null) {
         if (child.getNodeType() == Node.ELEMENT_NODE) {
             Element element = (Element)child;
             if (element.getNodeName().equals(elemName) &&
                     element.getAttribute(attrName).equals(attrValue)) {
                 return element;
             }
         }
         child = child.getPreviousSibling();
     }
     
     // not found
     return null;
     
 } // getLastChildElement(Node,String,String,String):Element

}</source>





Finds and returns the next sibling element node.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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.
*/

public class Main {

 /** Finds and returns the next sibling element node. */
 public static Element getNextSiblingElement(Node node) {
     
     // search for node
     Node sibling = node.getNextSibling();
     while (sibling != null) {
         if (sibling.getNodeType() == Node.ELEMENT_NODE) {
             return (Element)sibling;
         }
         sibling = sibling.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getNextSiblingElement(Node):Element

}</source>





Finds and returns the next sibling node with the given name and attribute name, value pair.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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.
*/

public class Main {

 /**
  * Finds and returns the next sibling node with the given name and
  * attribute name, value pair. Since only elements have attributes,
  * the node returned will be of type Node.ELEMENT_NODE.
  */
 public static Element getNextSiblingElement(Node   node,
         String elemName,
         String attrName,
         String attrValue) {
     
     // search for node
     Node sibling = node.getNextSibling();
     while (sibling != null) {
         if (sibling.getNodeType() == Node.ELEMENT_NODE) {
             Element element = (Element)sibling;
             if (element.getNodeName().equals(elemName) &&
                     element.getAttribute(attrName).equals(attrValue)) {
                 return element;
             }
         }
         sibling = sibling.getNextSibling();
     }
     
     // not found
     return null;
     
 } // getNextSiblingElement(Node,String,String,String):Element

}</source>





Get Element Boolean Value

   <source lang="java">

import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static boolean getElementBooleanValue(Document document,
     Element parent, String element) {
   return Boolean
       .valueOf(getElementStringValue(document, parent, element))
       .booleanValue();
 }
 public static String getElementStringValue(Document document,
     Element parent, String element) {
   NodeList nl = parent.getElementsByTagName(element);
   if (nl.getLength() == 0) {
     return "";
   }
   Node n = nl.item(0).getFirstChild();
   if (n == null) {
     return "";
   }
   return n.getNodeValue();
 }

}</source>





Get Element Date Value

   <source lang="java">

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static Date getElementDateValue(Document document, Element parent, String string) {
   return parseDate(getElementStringValue(document, parent, string));
 }
 private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"T"HH:mm:ss");
 public static Date parseDate(String date) {
   try {
     return sdf.parse(date);
   } catch (ParseException e) {
     e.printStackTrace();
   }
   return null;
 }
 public static String getElementStringValue(Document document, Element parent, String element) {
   NodeList nl = parent.getElementsByTagName(element);
   if (nl.getLength() == 0) {
     return "";
   }
   Node n = nl.item(0).getFirstChild();
   if (n == null) {
     return "";
   }
   return n.getNodeValue();
 }

}</source>





Get Element Float Value

   <source lang="java">

import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static float getElementFloatValue(Document document, Element parent,
     String element) {
   return Float
       .parseFloat(getElementStringValue(document, parent, element));
 }
 public static String getElementStringValue(Document document,
     Element parent, String element) {
   NodeList nl = parent.getElementsByTagName(element);
   if (nl.getLength() == 0) {
     return "";
   }
   Node n = nl.item(0).getFirstChild();
   if (n == null) {
     return "";
   }
   return n.getNodeValue();
 }

}</source>





Get Element Int Value

   <source lang="java">

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static int getElementIntValue(Document document, Element parent,
     String string) {
   return Integer
       .parseInt(getElementStringValue(document, parent, string));
 }
 public static String getElementStringValue(Document document, Element parent, String element) {
   NodeList nl = parent.getElementsByTagName(element);
   if (nl.getLength() == 0) {
     return "";
   }
   Node n = nl.item(0).getFirstChild();
   if (n == null) {
     return "";
   }
   return n.getNodeValue();
 }

}</source>





Get Element Long Value

   <source lang="java">

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static long getElementLongValue(Document document, Element parent,
     String string) {
   return Long.parseLong(getElementStringValue(document, parent, string));
 }
 public static String getElementStringValue(Document document, Element parent, String element) {
   NodeList nl = parent.getElementsByTagName(element);
   if (nl.getLength() == 0) {
     return "";
   }
   Node n = nl.item(0).getFirstChild();
   if (n == null) {
     return "";
   }
   return n.getNodeValue();
 }

}</source>





Get Element QName

   <source lang="java">

/**

* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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 javax.xml.namespace.QName; import org.w3c.dom.Element; /**

* Few simple utils to read DOM. This is originally from the Jakarta Commons
* Modeler.
* 
* @author Costin Manolache
*/

public class Utils {

 public static QName getElementQName(Element el) {
   return new QName(el.getNamespaceURI(), el.getLocalName());

} }</source>





Get Elements by parent element

   <source lang="java">

import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static Element[] getElements(Document document, Element parent) {
   if (parent == null) {
     return new Element[] {};
   }
   NodeList nl = parent.getChildNodes();
   ArrayList al = new ArrayList();
   for (int i = 0; i < nl.getLength(); i++) {
     Node n = nl.item(i);
     if (n instanceof Element) {
       al.add((Element) nl.item(i));
     }
   }
   Element[] ret = new Element[al.size()];
   Iterator it = al.iterator();
   int i = 0;
   while (it.hasNext()) {
     ret[i] = (Element) it.next();
     i++;
   }
   return ret;
 }

}</source>





Get Element String Value

   <source lang="java">

import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /*******************************************************************************

* Copyright (C) 2007 Google Inc.
* 
* 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.
******************************************************************************/

/**

* Various XML utilities.
* 
* @author simonjsmith, ksim
* @version 1.1 - ksim - March 6th, 2007 - Added functions regarding streaming
* @version 1.2 - ksim - March 10th, 2007 - Added functions regarding DOM
*          manipulation
*/

public class Utils {

 public static String getElementStringValue(Document document,
     Element parent, String element) {
   NodeList nl = parent.getElementsByTagName(element);
   if (nl.getLength() == 0) {
     return "";
   }
   Node n = nl.item(0).getFirstChild();
   if (n == null) {
     return "";
   }
   return n.getNodeValue();
 }

}</source>





Get Element Text

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; public class Utils {

 public static String getElementText(Element e) {
   StringBuffer buf = new StringBuffer();
   for (Node n = e.getFirstChild(); n != null; n = n.getNextSibling()) {
     if (n.getNodeType() == Node.TEXT_NODE || n.getNodeType() == Node.CDATA_SECTION_NODE) {
       buf.append(n.getNodeValue());
     }
   }
   return buf.toString();
 }

}</source>





Get First Element

   <source lang="java">

/**

* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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 javax.xml.namespace.QName; import org.w3c.dom.Element; import org.w3c.dom.Node; /**

* Few simple utils to read DOM. This is originally from the Jakarta Commons
* Modeler.
* 
* @author Costin Manolache
*/

public class Utils {

 public static Element getFirstElement(Node parent) {
   Node n = parent.getFirstChild();
   while (n != null && Node.ELEMENT_NODE != n.getNodeType()) {
       n = n.getNextSibling();
   }
   if (n == null) {
       return null;
   }
   return (Element)n;

}

 public static Element getNextElement(Element el) {
   Node nd = el.getNextSibling();
   while (nd != null) {
       if (nd.getNodeType() == Node.ELEMENT_NODE) {
           return (Element)nd;
       }
       nd = nd.getNextSibling();
   }
   return null;

} }</source>





Get Next Element

   <source lang="java">

/**

* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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 javax.xml.namespace.QName; import org.w3c.dom.Element; import org.w3c.dom.Node; /**

* Few simple utils to read DOM. This is originally from the Jakarta Commons
* Modeler.
* 
* @author Costin Manolache
*/

public class Utils {

 public static Element getNextElement(Element el) {
   Node nd = el.getNextSibling();
   while (nd != null) {
       if (nd.getNodeType() == Node.ELEMENT_NODE) {
           return (Element)nd;
       }
       nd = nd.getNextSibling();
   }
   return null;

} }</source>





Get the first element child.

   <source lang="java">

/**

* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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 java.io.OutputStream; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Node; /**

* Few simple utils to read DOM. This is originally from the Jakarta Commons
* Modeler.
* 
* @author Costin Manolache
*/

public class Utils {

 /**
  * Get the first element child.
  * 
  * @param parent lookup direct childs
  * @param name name of the element. If null return the first element.
  */
 public static Node getChild(Node parent, String name) {
     if (parent == null) {
         return null;
     }
     Node first = parent.getFirstChild();
     if (first == null) {
         return null;
     }
     for (Node node = first; node != null; node = node.getNextSibling()) {
         // System.out.println("getNode: " + name + " " +
         // node.getNodeName());
         if (node.getNodeType() != Node.ELEMENT_NODE) {
             continue;
         }
         if (name != null && name.equals(node.getNodeName())) {
             return node;
         }
         if (name == null) {
             return node;
         }
     }
     return null;
 }

}</source>





Get the name of this element

   <source lang="java">

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

public class Main {

 // return the name of this element
 public static String getName(Node node) {
     return node.getNodeName();
 } // getLocalName(Element):  String

}</source>





Get the next sibling with the same name and type

   <source lang="java">

import org.w3c.dom.Node; public class Main {

 /** Get the next sibling with the same name and type
  */
 public static Node getNext( Node current ) {
     String name=current.getNodeName();
     int type=current.getNodeType();
     return getNext( current, name, type);
 }
 /** 
  */ 
 public static Node getNext( Node current, String name, int type) {
     Node first=current.getNextSibling();
     if( first==null ) return null;
     for (Node node = first; node != null;
          node = node.getNextSibling()) {
         
         if( type >= 0 && node.getNodeType() != type ) continue;
         //System.out.println("getNode: " + name + " " + node.getNodeName());
         if( name==null )
             return node;
         if( name.equals( node.getNodeName() ) ) {
             return node;
         }
     }
     return null;
 }

}</source>





Moves the content of the given element to the given element

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Utils {

 /**
  * 
  */
 public static void moveContent(Element from, Element to) {
     // lets move the child nodes across
     NodeList childNodes = from.getChildNodes();
     while (childNodes.getLength() > 0) {
         Node node = childNodes.item(0);
         from.removeChild(node);
         to.appendChild(node);
     }
 }

}</source>





Return child elements with specified name.

   <source lang="java">

/**

* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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 java.util.ArrayList; import java.util.List; import org.w3c.dom.Element; import org.w3c.dom.Node; /**

* Few simple utils to read DOM. This is originally from the Jakarta Commons
* Modeler.
* 
* @author Costin Manolache
*/

public class Utils {

 /**
  * Return child elements with specified name.
  * 
  * @param parent
  * @param ns
  * @param localName
  * @return
  */
 public static List<Element> getChildrenWithName(Element parent, String ns, String localName) {
   List<Element> r = new ArrayList<Element>();
   for (Node n = parent.getFirstChild(); n != null; n = n.getNextSibling()) {
     if (n instanceof Element) {
       Element e = (Element) n;
       String eNs = (e.getNamespaceURI() == null) ? "" : e.getNamespaceURI();
       if (ns.equals(eNs) && localName.equals(e.getLocalName())) {
         r.add(e);
       }
     }
   }
   return r;
 }

}</source>





Returns an iterator over the children of the given element with the given tag name.

   <source lang="java">

import java.util.ArrayList; import java.util.Iterator; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /*

 * JBoss, Home of Professional Open Source
 * Copyright 2005, JBoss Inc., and individual contributors as indicated
 * by the @authors tag. See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * This is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as
 * published by the Free Software Foundation; either version 2.1 of
 * the License, or (at your option) any later version.
 *
 * This software is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this software; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
 */

public class Utils {

 /**
  * Returns an iterator over the children of the given element with
  * the given tag name.
  *
  * @param element    The parent element
  * @param tagName    The name of the desired child
  * @return           An interator of children or null if element is null.
  */
 public static Iterator<Element> getChildrenByTagName(Element element,
                                             String tagName)
 {
    if (element == null) return null;
    // getElementsByTagName gives the corresponding elements in the whole 
    // descendance. We want only children
    NodeList children = element.getChildNodes();
    ArrayList<Element> goodChildren = new ArrayList<Element>();
    for (int i=0; i<children.getLength(); i++) {
       Node currentChild = children.item(i);
       if (currentChild.getNodeType() == Node.ELEMENT_NODE && 
           ((Element)currentChild).getTagName().equals(tagName)) {
          goodChildren.add((Element)currentChild);
       }
    }
    return goodChildren.iterator();
 }

}</source>





Returns the concatenated child text of the specified node.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; /*

* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF 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.
*/

public class Main {

 /**
  * Returns the concatenated child text of the specified node.
  * This method only looks at the immediate children of type
  * Node.TEXT_NODE or the children of any child
  * node that is of type Node.CDATA_SECTION_NODE
  * for the concatenation.
  *
  * @param node The node to look at.
  */
 public static String getChildText(Node node) {
     
     // is there anything to do?
     if (node == null) {
         return null;
     }
     
     // concatenate children text
     StringBuffer str = new StringBuffer();
     Node child = node.getFirstChild();
     while (child != null) {
         short type = child.getNodeType();
         if (type == Node.TEXT_NODE) {
             str.append(child.getNodeValue());
         }
         else if (type == Node.CDATA_SECTION_NODE) {
             str.append(getChildText(child));
         }
         child = child.getNextSibling();
     }
     
     // return text value
     return str.toString();
     
 } // getChildText(Node):String

}</source>





Returns the text of the element

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Utils {

 /**
  * 
  */
 public static String getElementText(Element element) {
     StringBuffer buffer = new StringBuffer();
     NodeList nodeList = element.getChildNodes();
     for (int i = 0; i < nodeList.getLength(); i++) {
         Node node = nodeList.item(i);
         if (node.getNodeType() == Node.TEXT_NODE || node.getNodeType() == Node.CDATA_SECTION_NODE) {
             buffer.append(node.getNodeValue());
         }
     }
     return buffer.toString();
 }

}</source>





Return the first element child with the specified qualified name.

   <source lang="java">

/**

* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF 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 java.io.OutputStream; import javax.xml.transform.OutputKeys; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.Element; import org.w3c.dom.Node; /**

* Few simple utils to read DOM. This is originally from the Jakarta Commons
* Modeler.
* 
* @author Costin Manolache
*/

public class Utils {

 /**
  * Return the first element child with the specified qualified name.
  * 
  * @param parent
  * @param ns
  * @param lp
  * @return
  */
 public static Element getFirstChildWithName(Element parent, String ns, String lp) {
     for (Node n = parent.getFirstChild(); n != null; n = n.getNextSibling()) {
         if (n instanceof Element) {
             Element e = (Element)n;
             String ens = (e.getNamespaceURI() == null) ? "" : e.getNamespaceURI();
             if (ns.equals(ens) && lp.equals(e.getLocalName())) {
                 return e;
             }
         }
     }
     return null;
 }

}</source>





Return the first named Element found. Null if none.

   <source lang="java">

import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class Utils {

 /**
  * Return a list of named Elements.
  * @param element the containing Element
  * @param name the tag name
  * @return NodeList of matching elements
  */
 public static NodeList getElementList(Element element, String name) {
   return element.getElementsByTagName(name);
 }
 /**
  * Return the first named Element found.  Null if none.
  * @param element the containing Element
  * @param name the tag name
  * @return matching Element (null if none)
  */
 public static Element getElement(Element element, String name) {
   NodeList nodeList = getElementList(element, name);
   return (nodeList.getLength() == 0) ? null : (Element) nodeList.item(0);
 }

}</source>





Return the next sibling with a given name and type

   <source lang="java">

import org.w3c.dom.Node; public class Main {

 /** 
  */ 
 public static Node getNext( Node current, String name, int type) {
     Node first=current.getNextSibling();
     if( first==null ) return null;
     for (Node node = first; node != null;
          node = node.getNextSibling()) {
         
         if( type >= 0 && node.getNodeType() != type ) continue;
         //System.out.println("getNode: " + name + " " + node.getNodeName());
         if( name==null )
             return node;
         if( name.equals( node.getNodeName() ) ) {
             return node;
         }
     }
     return null;
 }

}</source>