public class OMElementImpl extends OMNodeImpl implements OMElement, OMConstants, OMContainerEx
| Modifier and Type | Field and Description |
|---|---|
protected HashMap |
attributes
Field attributes
|
static OMNamespace |
DEFAULT_DEFAULT_NS_OBJECT |
protected OMNode |
firstChild
Field firstChild
|
protected OMNode |
lastChild |
protected String |
localName
Field localName
|
protected HashMap |
namespaces
Field namespaces
|
protected int |
noPrefixNamespaceCounter
Field noPrefixNamespaceCounter
|
protected OMNamespace |
ns
Field ns
|
protected QName |
qName |
nextSibling, nodeType, parent, previousSiblingbuilder, done, factoryCDATA_SECTION_NODE, COMMENT_NODE, DTD_NODE, ELEMENT_NODE, ENTITY_REFERENCE_NODE, PI_NODE, SPACE_NODE, TEXT_NODEARRAY_ITEM_LOCALNAME, ARRAY_ITEM_NS_PREFIX, ARRAY_ITEM_NSURI, ARRAY_ITEM_QNAME, DATA_HANDLER, DEFAULT_CHAR_SET_ENCODING, DEFAULT_DEFAULT_NAMESPACE, DEFAULT_XML_VERSION, IS_BINARY, IS_DATA_HANDLERS_AWARE, PULL_TYPE_BUILDER, PUSH_TYPE_BUILDER, XMLATTRTYPE_CDATA, XMLATTRTYPE_ENTITIES, XMLATTRTYPE_ENTITY, XMLATTRTYPE_ID, XMLATTRTYPE_IDREF, XMLATTRTYPE_IDREFS, XMLATTRTYPE_NMTOKEN, XMLATTRTYPE_NMTOKENS, XMLATTRTYPE_NOTATION, XMLNS_NS_PREFIX, XMLNS_NS_URI, XMLNS_PREFIX, XMLNS_URI| Constructor and Description |
|---|
OMElementImpl(QName qname,
OMContainer parent,
OMFactory factory)
It is assumed that the QName passed contains, at least, the localName for this element.
|
OMElementImpl(String localName,
OMNamespace ns,
OMContainer parent,
OMFactory factory)
This is the basic constructor for OMElement.
|
OMElementImpl(String localName,
OMNamespace ns,
OMContainer parent,
OMXMLParserWrapper builder,
OMFactory factory)
Constructor OMElementImpl.
|
OMElementImpl(String localName,
OMNamespace ns,
OMFactory factory)
Constructor OMElementImpl.
|
| Modifier and Type | Method and Description |
|---|---|
OMAttribute |
addAttribute(OMAttribute attr)
Inserts an attribute to this element.
|
OMAttribute |
addAttribute(String attributeName,
String value,
OMNamespace ns)
Adds an attribute to this element.
|
void |
addChild(OMNode child)
Adds child to the element.
|
void |
build()
Parses this node and builds the object structure in memory.
|
void |
buildNext()
Forces the parser to proceed, if parser has not yet finished with the XML input.
|
void |
buildWithAttachments()
Parses this node and builds the object structure in memory.
|
OMElement |
cloneOMElement()
Clones this element.
|
OMNamespace |
declareDefaultNamespace(String uri)
We use "" to store the default namespace of this element.
|
OMNamespace |
declareNamespace(OMNamespace namespace)
Declares a namespace with the element as its scope.
|
OMNamespace |
declareNamespace(String uri,
String prefix)
Creates a namespace in the current element scope.
|
OMNode |
detach()
Removes this information item and its children, from the model completely.
|
void |
discard()
Method discard.
|
OMNamespace |
findNamespace(String uri,
String prefix)
Finds a namespace with the given uri and prefix, in the scope of the document.
|
OMNamespace |
findNamespaceURI(String prefix)
Checks for a namespace in the context of this element with the given prefix and returns the
relevant namespace object, if available.
|
Iterator |
getAllAttributes()
Returns a List of OMAttributes.
|
Iterator |
getAllDeclaredNamespaces()
Method getAllDeclaredNamespaces.
|
OMAttribute |
getAttribute(QName qname)
Returns a named attribute if present.
|
String |
getAttributeValue(QName qname)
Returns a named attribute's value, if present.
|
OMXMLParserWrapper |
getBuilder()
Method getBuilder.
|
Iterator |
getChildElements()
Returns a filtered list of children - just the elements.
|
Iterator |
getChildren()
Returns a collection of this element.
|
Iterator |
getChildrenWithLocalName(String localName)
Returns an iterator for child nodes matching the local name.
|
Iterator |
getChildrenWithName(QName elementQName)
Searches for children with a given QName and returns an iterator to traverse through the
OMNodes.
|
Iterator |
getChildrenWithNamespaceURI(String uri)
Returns an iterator for child nodes matching the namespace uri.
|
OMNamespace |
getDefaultNamespace()
This will retrieve the default namespace of this element, if available. null returned if none
is found.
|
OMElement |
getFirstChildWithName(QName elementQName)
Method getFirstChildWithName.
|
OMElement |
getFirstElement()
Gets first element.
|
OMNode |
getFirstOMChild()
Method getFirstOMChild.
|
OMNode |
getFirstOMChildIfAvailable()
Get the first child if it is available.
|
int |
getLineNumber() |
String |
getLocalName()
Method getLocalName.
|
OMNamespace |
getNamespace()
Get the namespace this element is part of.
|
String |
getNamespaceURI()
Get the namespace URI of the element.
|
OMNode |
getNextOMSibling()
Gets the next sibling.
|
QName |
getQName()
Method getQName.
|
String |
getText()
Selects all the text children and concatenates them to a single string.
|
QName |
getTextAsQName()
OMText can contain its information as a QName as well.
|
String |
getTrimmedText()
Returns the concatination string of TRIMMED values of all OMText child nodes of this
element.
|
int |
getType()
Gets the type of node, as this is the super class of all the nodes.
|
XMLStreamReader |
getXMLStreamReader()
Get a pull parser representation of this element with caching enabled.
|
XMLStreamReader |
getXMLStreamReader(boolean cache)
Get a pull parser representation of this element.
|
XMLStreamReader |
getXMLStreamReaderWithoutCaching()
Get a pull parser representation of this element with caching disabled.
|
void |
internalSerialize(XMLStreamWriter writer,
boolean cache)
Serializes the node.
|
protected void |
notifyChildComplete()
This method will be called when one of the children becomes complete.
|
void |
removeAttribute(OMAttribute attr)
Method removeAttribute.
|
QName |
resolveQName(String qname)
Resolves a QName literal in the namespace context defined by this element and produces a
corresponding
QName object. |
void |
setBuilder(OMXMLParserWrapper wrapper)
Method setBuilder.
|
void |
setFirstChild(OMNode firstChild)
Method setFirstChild.
|
void |
setLastChild(OMNode omNode)
forcefully set the last element in this parent element
|
void |
setLineNumber(int lineNumber) |
void |
setLocalName(String localName)
Method setLocalName.
|
void |
setNamespace(OMNamespace namespace)
Method setNamespace.
|
void |
setNamespaceWithNoFindInCurrentScope(OMNamespace namespace)
This will not search the namespace in the scope nor will declare in the current element, as
in setNamespace(OMNamespace).
|
void |
setText(QName text)
Sets the text, as a QName, of the given element. caution - This method will wipe out all the
text elements (and hence any mixed content) before setting the text.
|
void |
setText(String text)
Sets the text of the given element. caution - This method will wipe out all the text elements
(and hence any mixed content) before setting the text.
|
String |
toString()
This is a convenience method only.
|
String |
toStringWithConsume()
This is a convenience method only.
|
getNextOMSiblingIfAvailable, getParent, getPreviousOMSibling, importNode, insertSiblingAfter, insertSiblingBefore, internalSerialize, internalSerializeAndConsume, setComplete, setNextOMSibling, setParent, setPreviousOMSibling, setTypeclose, getOMFactory, isComplete, serialize, serialize, serialize, serialize, serialize, serialize, serializeAndConsume, serializeAndConsume, serializeAndConsume, serializeAndConsume, serializeAndConsumeclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitserialize, serialize, serialize, serialize, serializeAndConsume, serializeAndConsume, serializeAndConsume, serializeAndConsumegetParent, getPreviousOMSibling, insertSiblingAfter, insertSiblingBeforesetCompleteclose, getOMFactory, isComplete, serialize, serialize, serializeAndConsumepublic static final OMNamespace DEFAULT_DEFAULT_NS_OBJECT
protected OMNamespace ns
protected String localName
protected QName qName
protected OMNode firstChild
protected HashMap namespaces
protected HashMap attributes
protected int noPrefixNamespaceCounter
protected OMNode lastChild
public OMElementImpl(String localName, OMNamespace ns, OMContainer parent, OMXMLParserWrapper builder, OMFactory factory)
public OMElementImpl(String localName, OMNamespace ns, OMFactory factory)
public OMElementImpl(String localName, OMNamespace ns, OMContainer parent, OMFactory factory)
localName - - this MUST always be not nullns - - can be nullparent - - this should be an OMContainerfactory - - factory that created this OMElement
A null namespace indicates that the default namespace in scope is usedpublic OMElementImpl(QName qname, OMContainer parent, OMFactory factory) throws OMException
qname - - this should be valid qname according to javax.xml.namespace.QNameOMExceptionpublic void addChild(OMNode child)
addChild in interface OMContainerpublic Iterator getChildrenWithName(QName elementQName)
getChildrenWithName in interface OMContainerelementQName - The QName specifying namespace and local name to match.OMElement items that match the given QNameOMExceptionpublic Iterator getChildrenWithLocalName(String localName)
OMContainergetChildrenWithLocalName in interface OMContainerOMElement items that match the given localNamepublic Iterator getChildrenWithNamespaceURI(String uri)
OMContainergetChildrenWithNamespaceURI in interface OMContainerOMElement items that match the given uripublic OMElement getFirstChildWithName(QName elementQName) throws OMException
getFirstChildWithName in interface OMContainerelementQName - The QName to use for matching.qname
criteria, or null if none is found.OMExceptionOMContainer.getChildrenWithName(QName)public OMNode getNextOMSibling() throws OMException
getNextOMSibling in interface OMNodegetNextOMSibling in class OMNodeImplOMExceptionpublic Iterator getChildren()
getChildren in interface OMContainerOMContainer.getFirstChildWithName(javax.xml.namespace.QName),
OMContainer.getChildrenWithName(javax.xml.namespace.QName)public Iterator getChildElements()
getChildElements in interface OMElementOMContainer.getChildren(),
OMContainer.getChildrenWithName(javax.xml.namespace.QName)public OMNamespace declareNamespace(String uri, String prefix)
declareNamespace in interface OMElementuri - The namespace to declare in the current scope. The caller is expected to
ensure that the URI is a valid namespace name.prefix - The prefix to associate with the given namespace. The caller is expected to
ensure that this is a valid XML prefix. If "" is given, first this will check
for an existing namespace with the same uri. If not found, a prefix will be
auto-generated.OMElement.declareNamespace(OMNamespace),
OMElement.findNamespace(String, String),
OMElement.getAllDeclaredNamespaces()public OMNamespace declareDefaultNamespace(String uri)
declareDefaultNamespace in interface OMElementuri - public OMNamespace getDefaultNamespace()
OMElementgetDefaultNamespace in interface OMElementpublic OMNamespace declareNamespace(OMNamespace namespace)
OMElementdeclareNamespace in interface OMElementnamespace - The namespace to declare.OMElement.declareNamespace(String, String),
OMElement.findNamespace(String, String),
OMElement.getAllDeclaredNamespaces()public OMNamespace findNamespace(String uri, String prefix)
findNamespace in interface OMElementuri - The namespace to look for. If this is specified, prefix should be
null.prefix - The prefix to look for. If this is specified, uri should be null.OMElement.declareNamespace(String, String),
OMElement.declareNamespace(OMNamespace),
OMElement.getAllDeclaredNamespaces()public OMNamespace findNamespaceURI(String prefix)
OMElementfindNamespaceURI in interface OMElementpublic Iterator getAllDeclaredNamespaces()
getAllDeclaredNamespaces in interface OMElementOMElement.findNamespace(String, String),
OMElement.declareNamespace(String, String),
OMElement.declareNamespace(OMNamespace)public Iterator getAllAttributes()
getAllAttributes in interface OMElementOMElement.getAttribute(javax.xml.namespace.QName),
OMElement.addAttribute(OMAttribute),
OMElement.addAttribute(String, String, OMNamespace)public OMAttribute getAttribute(QName qname)
getAttribute in interface OMElementqname - the qualified name to search forpublic String getAttributeValue(QName qname)
getAttributeValue in interface OMElementqname - the qualified name to search forpublic OMAttribute addAttribute(OMAttribute attr)
The owner of the attribute is set to be the particular OMElement.
If the attribute already has an owner then the attribute is cloned (i.e. its name,
value and namespace are copied to a new attribute) and the new attribute is added
to the element. It's owner is then set to be the particular OMElement.
addAttribute in interface OMElementattr - The attribute to add.OMAttributeImpl.equals(Object)public void removeAttribute(OMAttribute attr)
removeAttribute in interface OMElementpublic OMAttribute addAttribute(String attributeName, String value, OMNamespace ns)
OMElement
If the element already has an attribute with the same local name and namespace URI, then this
existing attribute will be removed from the element, i.e. this method will always create a
new OMAttribute instance and never update an existing one.
addAttribute in interface OMElementattributeName - The local name for the attribute.value - The string value of the attribute. This function does not check to make sure that
the given attribute value can be serialized directly as an XML value. The caller
may, for example, pass a string with the character 0x01.ns - The namespace has to be one of the in scope namespace. i.e. the passed namespace
must be declared in the parent element of this attribute or ancestors of the
parent element of the attribute.public void setBuilder(OMXMLParserWrapper wrapper)
setBuilder in interface OMElementpublic OMXMLParserWrapper getBuilder()
getBuilder in interface OMContainerpublic void buildNext()
buildNext in interface OMContainerpublic OMNode getFirstOMChild()
getFirstOMChild in interface OMContainerpublic OMNode getFirstOMChildIfAvailable()
OMContainerExOMSerializable.isComplete() may return false when called on the child.
In contrast to OMContainer.getFirstOMChild(), this method will never modify
the state of the underlying parser.getFirstOMChildIfAvailable in interface OMContainerExnull if the container has no children or
the builder has not yet started to build the first childpublic void setFirstChild(OMNode firstChild)
setFirstChild in interface OMContainerExsetFirstChild in interface OMElementpublic void setLastChild(OMNode omNode)
OMContainerExsetLastChild in interface OMContainerExpublic OMNode detach() throws OMException
detach in interface OMNodedetach in class OMNodeImplOMExceptionpublic int getType()
getType in interface OMNodegetType in class OMNodeImplOMNodeImpl.setType(int)OMNodeImpl.setType(int)public void build()
throws OMException
OMSerializableImplbuild in interface OMSerializablebuild in class OMSerializableImplOMExceptionpublic XMLStreamReader getXMLStreamReader()
OMContainerOMContainer.getXMLStreamReader(boolean) with cache set to
true.getXMLStreamReader in interface OMContainerXMLStreamReader representation of this elementpublic XMLStreamReader getXMLStreamReaderWithoutCaching()
OMContainerOMContainer.getXMLStreamReader(boolean) with cache set to
false.getXMLStreamReaderWithoutCaching in interface OMContainerXMLStreamReader representation of this elementpublic XMLStreamReader getXMLStreamReader(boolean cache)
OMContainerXMLStreamReader instance that produces a sequence of StAX events for this element and
its content. The sequence of events is independent of the state of this element and the value
of the cache parameter, but the side effects of calling this method and
consuming the reader are different:
| State | cache |
Side effects |
|---|---|---|
| The element is fully built (or was created programmatically). | true |
No side effects. The reader will synthesize StAX events from the object model. |
false |
||
| The element is partially built, i.e. deferred parsing is taking place. | true |
When a StAX event is requested from the reader, it will built the information item (if necessary) and synthesize the StAX event. If the caller completely consumes the reader, the element will be completely built. Otherwise it will be partially built. |
false |
The reader will delegate to the underlying parser starting from the event corresponding to the last information item that has been built. In other words, after synthesizing a number of events, the reader will switch to delegation mode. An attempt to access the object model afterwards will result in an error. |
To free any resources associated with the returned reader, the caller MUST invoke the
XMLStreamReader.close() method.
The returned reader MAY implement the extension defined by
DataHandlerReader and any binary content will
be reported using this extension. More precisely, if the object model contains an
OMText instance with OMText.isBinary() returning true (or
would contain such an instance after it has been fully built), then its data will always be
exposed through this extension.
The caller MUST NOT make any other assumption about the returned reader, in particular about its runtime type.
Note (non normative): For various reasons, existing code based on Axiom versions prior to 1.2.9 makes assumptions on the returned reader that should no longer be considered valid:
OMStAXWrapper. While it is true that Axiom internally uses
this class to synthesize StAX events, it may wrap this instance in another reader
implementation. E.g. depending on the log level, the reader will be wrapped using
OMXMLStreamReaderValidator. This was already the case in
Axiom versions prior to 1.2.9. It should also be noted that instances of
OMSourcedElement (which extends the present interface) may return a reader that is
not implemented using OMStAXWrapper.OMXMLStreamReader interface of the returned reader to switch
off MTOM inlining using OMXMLStreamReader.setInlineMTOM(boolean). This has now been
deprecated and it is recommended to use
XOPEncodingStreamReader instead.OMAttachmentAccessor interface of the returned
reader to fetch attachments using OMAttachmentAccessor.getDataHandler(String). There
is no reason anymore to do so:OMXMLStreamReader.setInlineMTOM(boolean) is used to disable MTOM inlining,
OMAttachmentAccessor.getDataHandler(String) must be used to retrieve the binary
content. The fact that this method is deprecated removes the need for this.OMAttachmentAccessor.getDataHandler(String) to retrieve the binary content. Starting
with 1.2.9 this is no longer be the case: as specified above, the sequence of events is
independent of the state of the object model and the value of the cache
parameter, and all binary content is reported through the
DataHandlerReader extension.OMAttachmentAccessor.getDataHandler(String)
doesn't give access to the attachments in the SwA case (neither in 1.2.9 nor in previous
versions).
Code making any of these assumptions should be fixed, so that only XMLStreamReader
and DataHandlerReader are used (and if
necessary, XOPEncodingStreamReader).
getXMLStreamReader in interface OMContainercache - indicates if caching should be enabledXMLStreamReader representation of this elementpublic void setText(String text)
public void setText(QName text)
public String getText()
public QName getTextAsQName()
OMElementgetTextAsQName in interface OMElementpublic String getTrimmedText()
public void internalSerialize(XMLStreamWriter writer, boolean cache) throws XMLStreamException
OMSerializableImplinternalSerialize in interface OMNodeExinternalSerialize in class OMSerializableImplcache - indicates if caching should be enabledXMLStreamExceptionpublic OMElement getFirstElement()
getFirstElement in interface OMElementpublic String getLocalName()
getLocalName in interface OMElementpublic void setLocalName(String localName)
setLocalName in interface OMElementpublic OMNamespace getNamespace()
OMElementgetNamespace in interface OMElementnull if the element has no namespacepublic String getNamespaceURI()
OMElementNode.getNamespaceURI() (when called on an
Element).getNamespaceURI in interface OMElementnull if the element has no namespacepublic void setNamespace(OMNamespace namespace)
setNamespace in interface OMElementpublic void setNamespaceWithNoFindInCurrentScope(OMNamespace namespace)
OMElementsetNamespaceWithNoFindInCurrentScope in interface OMElementpublic QName getQName()
public String toStringWithConsume() throws XMLStreamException
OMElementtoStringWithConsume in interface OMElementXMLStreamExceptionpublic String toString()
OMElementpublic void discard()
throws OMException
discard in interface OMNodeOMExceptionpublic QName resolveQName(String qname)
OMElementQName object. The implementation uses the algorithm defined by the XML
Schema specification. In particular, the namespace for an unprefixed QName is the default
namespace (not the null namespace), i.e. QNames are resolved in the same way as element
names.resolveQName in interface OMElementqname - the QName literal to resolveQName object, or null if the QName can't be resolved, i.e.
if the prefix is not bound in the namespace context of this elementpublic OMElement cloneOMElement()
OMElementcloneOMElement in interface OMElementpublic void setLineNumber(int lineNumber)
setLineNumber in interface OMElementpublic int getLineNumber()
getLineNumber in interface OMElementpublic void buildWithAttachments()
OMNodeImplbuildWithAttachments in interface OMNodebuildWithAttachments in class OMNodeImplprotected void notifyChildComplete()
Copyright © 2004–2016 The Apache Software Foundation. All rights reserved.