FileDocCategorySizeDatePackage
QName.javaAPI DocphoneME MR2 API (J2ME)14196Wed May 02 18:00:34 BST 2007javax.xml.namespace

QName

public class QName extends Object

QName represents a qualified name as defined in the XML specifications: XML Schema Part2: Datatypes specification, Namespaces in XML, Namespaces in XML Errata.

The value of a QName contains a Namespace URI, local part and prefix.

The prefix is included in QName to retain lexical information when present in an {@link javax.xml.transform.Source XML input source}. The prefix is NOT used in {@link #equals(Object) QName.equals(Object)} or to compute the {@link #hashCode() QName.hashCode()}. Equality and the hash code are defined using only the Namespace URI and local part.

If not specified, the Namespace URI is set to "" (the empty string). If not specified, the prefix is set to "" (the empty string).

QName is immutable.

version
1.1
see
XML Schema Part2: Datatypes specification
see
Namespaces in XML
see
Namespaces in XML Errata

Fields Summary
private final String
namespaceURI

Namespace URI of this QName.

private final String
localPart

local part of this QName.

private final String
prefix

prefix of this QName.

Constructors Summary
public QName(String namespaceURI, String localPart)

QName constructor specifying the Namespace URI and local part.

If the Namespace URI is null, it is set to "". This value represents no explicitly defined Namespace as defined by the Namespaces in XML specification. This action preserves compatible behavior with QName 1.0.

If the local part is null, an IllegalArgumentException is thrown.

When using this constructor, the prefix is set to "".

param
namespaceURI Namespace URI of the QName
param
localPart local part of the QName
see
#QName(String namespaceURI, String localPart, String prefix) QName(String namespaceURI, String localPart, String prefix)

        this(namespaceURI, localPart, "");
    
public QName(String namespaceURI, String localPart, String prefix)

QName constructor specifying the Namespace URI, local part and prefix.

If the Namespace URI is null, it is set to "". This value represents no explicitly defined Namespace as defined by the Namespaces in XML specification. This action preserves compatible behavior with QName 1.0.

If the local part is null, an IllegalArgumentException is thrown.

If the prefix is null, an IllegalArgumentException is thrown. Use "" to explicitly indicate that no prefix is present or the prefix is not relevant.

param
namespaceURI Namespace URI of the QName
param
localPart local part of the QName
param
prefix prefix of the QName

        if (namespaceURI == null) {
            this.namespaceURI = "";
        } else {
            this.namespaceURI = namespaceURI;
        }
        
        if (localPart == null) {
            throw new IllegalArgumentException(
                "local part cannot be \"null\" when creating a QName");
        }
        this.localPart = localPart;
        
        if (prefix == null) {
            throw new IllegalArgumentException(
                "prefix cannot be \"null\" when creating a QName");
        }
        this.prefix = prefix;
    
public QName(String localPart)

QName constructor specifying the local part.

If the local part is null or .equals(""), an IllegalArgumentException is thrown.

When using this constructor, the Namespace URI is set to "" and the prefix is set to "".

In an XML context, all Element and Attribute names exist in the context of a Namespace. Making this explicit during the construction of a QName helps to prevent hard to diagnosis XML validity errors. The constructors {@link #QName(String namespaceURI, String localPart) QName(String namespaceURI, String localPart)} and {@link #QName(String namespaceURI, String localPart, String prefix) QName(String namespaceURI, String localPart, String prefix)} are preferred.

param
localPart local part of the QName
see
#QName(String namespaceURI, String localPart) QName(String namespaceURI, String localPart)
see
#QName(String namespaceURI, String localPart, String prefix) QName(String namespaceURI, String localPart, String prefix)

        this("",
             localPart,
             "");
    
Methods Summary
public booleanequals(java.lang.Object objectToTest)

Test this QName for equality with another Object.

If the Object to be tested is not a QName or is null, then this method returns false.

Two QNames are considered equal if and only if both the Namespace URI and local part are equal. This method uses String.equals() to check equality of the Namespace URI and local part. The prefix is NOT used to determine equality.

This method satisfies the general contract of {@link java.lang.Object#equals(Object) Object.equals(Object)}

param
objectToTest the Object to test for equality with this QName
return
true if the given Object is equal to this QName else false

        if (objectToTest == null || !(objectToTest instanceof QName)) {
            return false;
        }
    
        QName qName = (QName) objectToTest;
        
        return namespaceURI.equals(qName.namespaceURI)
            && localPart.equals(qName.localPart);
    
public java.lang.StringgetLocalPart()

Get the local part of this QName.

return
local part of this QName

        return localPart;
    
public java.lang.StringgetNamespaceURI()

Get the Namespace URI of this QName.

return
Namespace URI of this QName

        return namespaceURI;
    
public java.lang.StringgetPrefix()

Get the prefix of this QName.

The prefix assigned to a QName may NOT be valid in a different context. For example, a QName may be assigned a prefix in the context of parsing a document but that prefix may be invalid in the context of a different document.

return
prefix of this QName

        return prefix;
    
public inthashCode()

Generate the hash code for this QName.

The hash code is calculated using both the Namespace URI and the local part of the QName. The prefix is NOT used to calculate the hash code.

This method satisfies the general contract of {@link java.lang.Object#hashCode() Object.hashCode()}.

return
hash code for this QName Object

        return namespaceURI.hashCode() ^ localPart.hashCode();
    
public java.lang.StringtoString()

String representation of this QName.

There is NO standard specification for representing a QName as a String. The returned String is not portable across implementations and will change when a standard String representation is defined. This implementation currently represents a QName as: "{" + Namespace URI + "}" + local part. If the Namespace URI .equals(""), only the local part is returned. An appropriate use of this method is for debugging or logging for human consumption.

Note the prefix value is NOT returned as part of the String representation.

This method satisfies the general contract of {@link java.lang.Object#toString() Object.toString()}.

return
String representation of this QName

        if (namespaceURI.equals("")) {
            return localPart;
        } else {
            return "{" + namespaceURI + "}" + localPart;
        }
    
public static javax.xml.namespace.QNamevalueOf(java.lang.String qNameAsString)

QName derived from parsing the formatted String.

If the String is null or does not conform to {@link #toString() QName.toString()} formatting, an IllegalArgumentException is thrown.

The String MUST be in the form returned by {@link #toString() QName.toString()}. There is NO standard specification for representing a QName as a String. The String format is NOT portable across implementations and will change when a standard String representation is defined. This implementation currently parses a String formatted as: "{" + Namespace URI + "}" + local part. If the Namespace URI .equals(""), only the local part should be provided.

The prefix value CANNOT be represented in the String and will be set to ""

This method does not do full validation of the resulting QName. In particular, the local part is not validated as a NCName as specified in Namespaces in XML.

param
qNameAsString String representation of the QName
return
QName corresponding to the given String
see
#toString() QName.toString()

        if (qNameAsString == null) {
            throw new IllegalArgumentException(
              "cannot create QName from \"null\"");
        }

        // added this in 1.1 so that valueOf() can read back any QName
        // serialized using toString()
        if (qNameAsString.length() == 0) {
            return new QName("");
        }

        // local part only?
        if (qNameAsString.charAt(0) != '{") {
            return new QName("",
                             qNameAsString,
                             "");
        }

        // specifies Namespace URI and local part
        int endOfNamespaceURI = qNameAsString.indexOf('}");
        if (endOfNamespaceURI == -1) {
            throw new IllegalArgumentException(
                "cannot create QName from \""
                + qNameAsString + "\", missing closing \"}\"");
        }
        if (endOfNamespaceURI == qNameAsString.length() - 1) {
            throw new IllegalArgumentException(
                "cannot create QName from \""
                + qNameAsString + "\", missing local part");
        }
        return new QName(qNameAsString.substring(1, endOfNamespaceURI),
                         qNameAsString.substring(endOfNamespaceURI + 1),
                         "");