View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.myfaces.shared_orchestra.util.xml;
20  
21  import org.w3c.dom.Element;
22  import org.w3c.dom.Node;
23  import org.w3c.dom.NodeList;
24  
25  import java.util.ArrayList;
26  import java.util.Collections;
27  import java.util.List;
28  
29  /**
30   * @author Manfred Geiler (latest modification by $Author: grantsmith $)
31   * @version $Revision: 472630 $ $Date: 2006-11-08 15:40:03 -0500 (Wed, 08 Nov 2006) $
32   */
33  public class XmlUtils
34  {
35      private XmlUtils()
36      {
37          // hide from public access
38      }
39  
40      public static String getElementText(Element elem)
41      {
42          StringBuffer buf = new StringBuffer();
43          NodeList nodeList = elem.getChildNodes();
44          for (int i = 0, len = nodeList.getLength(); i < len; i++)
45          {
46              Node n = nodeList.item(i);
47              if (n.getNodeType() == Node.TEXT_NODE)
48              {
49                  buf.append(n.getNodeValue());
50              }
51              else
52              {
53                  //TODO see jsf-samples
54                  //throw new FacesException("Unexpected node type " + n.getNodeType());
55              }
56          }
57          return buf.toString();
58      }
59  
60  
61  
62      /**
63       * Return content of child element with given tag name.
64       * If more than one children with this name are present, the content of the last
65       * element is returned.
66       *
67       * @param elem
68       * @param childTagName
69       * @return content of child element or null if no child element with this name was found
70       */
71      public static String getChildText(Element elem, String childTagName)
72      {
73          NodeList nodeList = elem.getElementsByTagName(childTagName);
74          int len = nodeList.getLength();
75          if (len == 0)
76          {
77              return null;
78          }
79          else
80          {
81              return getElementText((Element)nodeList.item(len - 1));
82          }
83     }
84  
85  
86      /**
87       * Return list of content Strings of all child elements with given tag name.
88       * @param elem
89       * @param childTagName
90       * @return List 
91       */
92      public static List getChildTextList(Element elem, String childTagName)
93      {
94          NodeList nodeList = elem.getElementsByTagName(childTagName);
95          int len = nodeList.getLength();
96          if (len == 0)
97          {
98              return Collections.EMPTY_LIST;
99          }
100         else
101         {
102             List list = new ArrayList(len);
103             for (int i = 0; i < len; i++)
104             {
105                 list.add(getElementText((Element)nodeList.item(i)));
106             }
107             return list;
108         }
109    }
110 
111 }