soapelementimpl.java
来自「开源的axis2框架的源码。用于开发WEBSERVER」· Java 代码 · 共 852 行 · 第 1/3 页
JAVA
852 行
public String getAttributeValue(Name name) {
//This method is waiting on the finalization of the name for a method
//in OMElement that returns a OMAttribute from an input QName
final OMAttribute attribute = element.getAttribute(new QName(name.getURI(),
name.getLocalName(),
name.getPrefix()));
if (attribute == null) {
return null;
}
return attribute.getAttributeValue();
}
/**
* Returns an iterator over all the immediate content of this element. This includes
* <CODE>Text</CODE> objects as well as <CODE>SOAPElement</CODE> objects.
*
* @return an iterator over <CODE>Text</CODE> and <CODE>SOAPElement</CODE> contained within this
* <CODE>SOAPElement</CODE> object
*/
public Iterator getChildElements() {
Iterator childIter = element.getChildren();
Collection childElements = new ArrayList();
while (childIter.hasNext()) {
childElements.add(toSAAJNode((org.w3c.dom.Node)childIter.next()));
}
return childElements.iterator();
}
/* (non-Javadoc)
* @see javax.xml.soap.SOAPElement#getChildElements(javax.xml.soap.Name)
*/
public Iterator getChildElements(Name name) {
QName qName = new QName(name.getURI(), name.getLocalName());
Iterator childIter = element.getChildrenWithName(qName);
Collection childElements = new ArrayList();
while (childIter.hasNext()) {
childElements.add(toSAAJNode((org.w3c.dom.Node)childIter.next()));
}
return childElements.iterator();
}
/* (non-Javadoc)
* @see javax.xml.soap.SOAPElement#getElementName()
*/
public Name getElementName() {
QName qName = element.getQName();
return new PrefixedQName(qName.getNamespaceURI(),
qName.getLocalPart(),
qName.getPrefix());
}
/* (non-Javadoc)
* @see javax.xml.soap.SOAPElement#getEncodingStyle()
*/
public String getEncodingStyle() {
return this.encodingStyle;
}
/* (non-Javadoc)
* @see javax.xml.soap.SOAPElement#getNamespacePrefixes()
*/
public Iterator getNamespacePrefixes() {
//Get all declared namespace, make a list of their prefixes and return an iterator over that list
ArrayList prefixList = new ArrayList();
Iterator nsIter = element.getAllDeclaredNamespaces();
while (nsIter.hasNext()) {
Object o = nsIter.next();
if (o instanceof org.apache.axiom.om.OMNamespace) {
org.apache.axiom.om.OMNamespace ns = (org.apache.axiom.om.OMNamespace)o;
prefixList.add(ns.getPrefix());
}
}
return prefixList.iterator();
}
/* (non-Javadoc)
* @see javax.xml.soap.SOAPElement#getNamespaceURI(java.lang.String)
*/
public String getNamespaceURI(String prefix) {
return element.getNamespaceURI(prefix);
}
/* (non-Javadoc)
* @see javax.xml.soap.SOAPElement#getVisibleNamespacePrefixes()
*/
public Iterator getVisibleNamespacePrefixes() {
//I'll recursively return all the declared namespaces till this node, including its parents etc.
Iterator namespacesIter = element.getAllDeclaredNamespaces();
ArrayList returnList = new ArrayList();
while (namespacesIter.hasNext()) {
Object o = namespacesIter.next();
if (o instanceof OMNamespace) {
OMNamespace ns = (OMNamespace)o;
if (ns.getPrefix() != null) {
returnList.add(ns.getPrefix());
}
}
}
//taken care of adding namespaces of this node.
//now we have to take care of adding the namespaces that are in the scope till the level of
//this nodes' parent.
org.apache.axiom.om.OMContainer parent = element.getParent();
if (parent != null && parent instanceof org.apache.axiom.om.OMElement) {
Iterator parentScopeNamespacesIter =
((org.apache.axiom.om.OMElement)parent).getAllDeclaredNamespaces();
while (parentScopeNamespacesIter.hasNext()) {
Object o = parentScopeNamespacesIter.next();
if (o instanceof OMNamespace) {
OMNamespace ns = (OMNamespace)o;
if (ns.getPrefix() != null) {
returnList.add(ns.getPrefix());
}
}
}
}
return returnList.iterator();
}
public SOAPElement addAttribute(QName qname, String value) throws SOAPException {
if (qname.getNamespaceURI() == null || qname.getNamespaceURI().trim().length() == 0) {
element.setAttribute(qname.getLocalPart(), value);
} else {
element.setAttributeNS(qname.getNamespaceURI(), qname.getPrefix() + ":" +
qname.getLocalPart(), value);
}
return this;
}
public SOAPElement addChildElement(QName qname) throws SOAPException {
String prefix = qname.getPrefix();
return addChildElement(qname.getLocalPart(), "".equals(prefix) ?
null : prefix, qname.getNamespaceURI());
}
/**
* Creates a QName whose namespace URI is the one associated with the parameter, prefix, in the
* context of this SOAPElement. The remaining elements of the new QName are taken directly from
* the parameters, localName and prefix.
*
* @param localName - a String containing the local part of the name. prefix - a String
* containing the prefix for the name.
* @return a QName with the specified localName and prefix, and with a namespace that is
* associated with the prefix in the context of this SOAPElement. This namespace will be
* the same as the one that would be returned by getNamespaceURI(String) if it were
* given prefix as its parameter.
* @throws SOAPException - if the QName cannot be created.
* @since SAAJ 1.3
*/
public QName createQName(String localName, String prefix) throws SOAPException {
if (this.element.getNamespaceURI(prefix) == null) {
throw new SOAPException("Invalid prefix");
}
QName qname = null;
if (this.element.getOMFactory() instanceof SOAP11Factory) {
qname = new QName(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI, localName, prefix);
} else if (this.element.getOMFactory() instanceof SOAP12Factory) {
qname = new QName(SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI, localName, prefix);
}
return qname;
}
public Iterator getAllAttributesAsQNames() {
final Iterator attribIter = element.getAllAttributes();
Collection attributesAsQNames = new ArrayList();
Attr attr;
QName qname;
while (attribIter.hasNext()) {
attr = (Attr)attribIter.next();
//Check : attr.getLocalName() | attr.getName()
qname = new QName(attr.getNamespaceURI(), attr.getName(), attr.getPrefix());
attributesAsQNames.add(qname);
}
return attributesAsQNames.iterator();
}
public String getAttributeValue(QName qname) {
final OMAttribute attribute = element.getAttribute(qname);
if (attribute == null) {
return null;
}
return attribute.getAttributeValue();
}
public Iterator getChildElements(QName qname) {
Iterator childIter = element.getChildrenWithName(qname);
Collection childElements = new ArrayList();
while (childIter.hasNext()) {
childElements.add(toSAAJNode((org.w3c.dom.Node)childIter.next()));
}
return childElements.iterator();
}
public QName getElementQName() {
return element.getQName();
}
public boolean removeAttribute(QName qname) {
org.apache.axiom.om.OMAttribute attr = element.getAttribute(qname);
if (attr != null) {
element.removeAttribute(attr);
return true;
}
return false;
}
public SOAPElement setElementQName(QName newName) throws SOAPException {
String localName = this.element.getLocalName();
if (org.apache.axiom.soap.SOAPConstants.BODY_LOCAL_NAME.equals(localName)
|| org.apache.axiom.soap.SOAPConstants.HEADER_LOCAL_NAME.equals(localName)
|| org.apache.axiom.soap.SOAPConstants.SOAPENVELOPE_LOCAL_NAME .equals(localName)) {
throw new SOAPException("changing this element name is not allowed");
}
OMNamespace omNamespace =
new OMNamespaceImpl(newName.getNamespaceURI(), newName.getPrefix());
this.element.setNamespace(omNamespace);
this.element.setLocalName(newName.getLocalPart());
return this;
}
/* (non-Javadoc)
* @see javax.xml.soap.SOAPElement#removeAttribute(javax.xml.soap.Name)
*/
public boolean removeAttribute(Name name) {
org.apache.axiom.om.OMAttribute attr = element.getAttribute(new QName(name.getURI(),
name.getLocalName(),
name.getPrefix()));
if (attr != null) {
element.removeAttribute(attr);
return true;
}
return false;
}
/* (non-Javadoc)
* @see javax.xml.soap.SOAPElement#removeContents()
*/
public void removeContents() {
//We will get all the children and iteratively call the detach() on all of 'em.
Iterator childIter = element.getChildElements();
while (childIter.hasNext()) {
Object o = childIter.next();
if (o instanceof org.apache.axiom.om.OMNode) {
((org.apache.axiom.om.OMNode)o).detach();
}
}
}
/* (non-Javadoc)
* @see javax.xml.soap.SOAPElement#removeNamespaceDeclaration(java.lang.String)
*/
public boolean removeNamespaceDeclaration(String prefix) {
return element.removeNamespace(prefix);
}
/**
* Sets the encoding style for this SOAPElement object to one specified.
*
* @param encodingStyle - a String giving the encoding style
* @throws IllegalArgumentException
* - if there was a problem in the encoding style being set. SOAPException - if setting
* the encodingStyle is invalid for this SOAPElement.
*/
public void setEncodingStyle(String encodingStyle) throws SOAPException {
if (this.element.getOMFactory() instanceof SOAP11Factory) {
try {
URI uri = new URI(encodingStyle);
if (!(this instanceof SOAPEnvelope)) {
if (!encodingStyle.equals(SOAPConstants.URI_NS_SOAP_ENCODING)) {
throw new IllegalArgumentException(
"Invalid Encoding style : " + encodingStyle);
}
}
this.encodingStyle = encodingStyle;
} catch (URISyntaxException e) {
throw new IllegalArgumentException("Invalid Encoding style : "
+ encodingStyle + ":" + e);
}
} else if (this.element.getOMFactory() instanceof SOAP12Factory) {
if (this instanceof SOAPHeader || this instanceof SOAPBody ||
this instanceof SOAPFault ||
this instanceof SOAPFaultElement || this instanceof SOAPEnvelope ||
this instanceof Detail) {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?