View Javadoc

1   package org.codehaus.xfire.util;
2   
3   import org.dom4j.DocumentFactory;
4   import org.dom4j.Element;
5   import org.dom4j.Namespace;
6   
7   /***
8    * DOM4J Namespace functions.
9    * 
10   * @author <a href="mailto:dan@envoisolutions.com">Dan Diephouse</a>
11   */
12  public class NamespaceHelper
13  {
14      /***
15       * @param nsUri
16       * @return The namespace with the specified URI.  If one doesn't
17       * exist, one is created.
18       */
19      public static Namespace createNamespace( String prefix, String nsUri )
20      {
21          return DocumentFactory.getInstance().createNamespace( prefix, nsUri );
22      }
23      
24      /***
25       * Create a unique namespace uri/prefix combination.
26       * 
27       * @param nsUri
28       * @return The namespace with the specified URI.  If one doesn't
29       * exist, one is created.
30       */
31      public static Namespace getNamespace( Element el, String nsUri )
32      {
33          Namespace ns = el.getNamespaceForURI( nsUri );
34  
35          if ( ns == null )
36          {
37              ns = DocumentFactory.getInstance().createNamespace( getUniquePrefix( el ), nsUri );
38              el.add( ns );
39          }
40          
41          return ns;
42      }
43      
44      private static String getUniquePrefix( Element el )
45      {
46          int n = 1;
47          
48          while(true)
49          {
50              String nsPrefix = "ns" + n;
51              
52              if ( el.getNamespaceForPrefix( nsPrefix ) == null )
53                  return nsPrefix;
54              
55              n++;
56          }
57      }    
58  }