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  
20  package org.apache.ws.commons.schema.utils;
21  
22  import org.w3c.dom.Element;
23  import org.w3c.dom.Node;
24  
25  public class XDOMUtil extends DOMUtil {
26  
27      /**
28       * Creates a new instance of XDOMUtil
29       */
30      private XDOMUtil() {
31      }
32  
33      public static Element getFirstChildElementNS(Node parent, String uri) {
34  
35          // search for node
36          Node child = parent.getFirstChild();
37          while (child != null) {
38              if (child.getNodeType() == Node.ELEMENT_NODE) {
39                  String childURI = child.getNamespaceURI();
40                  if (childURI != null && childURI.equals(uri)) {
41                      return (Element) child;
42                  }
43              }
44              child = child.getNextSibling();
45          }
46  
47          // not found
48          return null;
49  
50      }
51  
52      public static Element getNextSiblingElementNS(Node node, String uri) {
53          // search for node
54          Node sibling = node.getNextSibling();
55          while (sibling != null) {
56              if (sibling.getNodeType() == Node.ELEMENT_NODE) {
57                  String siblingURI = sibling.getNamespaceURI();
58                  if (siblingURI != null && siblingURI.equals(uri)) {
59                      return (Element) sibling;
60                  }
61              }
62              sibling = sibling.getNextSibling();
63          }
64  
65          // not found
66          return null;
67  
68      }
69      
70      public static boolean anyElementsWithNameNS(Element element, String uri, String name) {
71      	for (Element el = getFirstChildElementNS(element, uri); el != null; el = XDOMUtil.getNextSiblingElementNS(el, uri)) {
72      		if(el.getLocalName().equals(name) && el.getNamespaceURI().equals(uri)) {
73      			return true;
74      		}
75      	}
76      	return false;
77      }
78      
79  
80  }