@SuppressWarnings("unchecked") public boolean isSoap(Document document) { XPathFactory factory = XPathFactory.newInstance(); XPath xpath = factory.newXPath(); xpath.setNamespaceContext(SOAP_NAMESPACE_CONTEXT); try { for (Iterator iterator = SOAP_NAMESPACE_CONTEXT.getBoundPrefixes(); iterator.hasNext();) { String prefix = (String) iterator.next(); if ((Boolean)xpath.evaluate("/"+prefix+":Envelope", document, XPathConstants.BOOLEAN)) { return true; } } } catch (XPathExpressionException e) { logger.warn(e); } return false; } }
/** Creates and returns a list of <code>NameSpace</code> objects from the <code>NamespaceContext</code>. */ private List<Namespace> createNamespaces(SimpleNamespaceContext namespaceContext) { List<Namespace> namespaces = new ArrayList<Namespace>(); String defaultNamespaceUri = namespaceContext.getNamespaceURI(XMLConstants.DEFAULT_NS_PREFIX); if (StringUtils.hasLength(defaultNamespaceUri)) { namespaces.add(eventFactory.createNamespace(defaultNamespaceUri)); } for (Iterator<String> iterator = namespaceContext.getBoundPrefixes(); iterator.hasNext();) { String prefix = iterator.next(); String namespaceUri = namespaceContext.getNamespaceURI(prefix); namespaces.add(eventFactory.createNamespace(prefix, namespaceUri)); } return namespaces; }
@Override protected void startElementInternal(QName name, Attributes attributes, SimpleNamespaceContext namespaceContext) throws XMLStreamException { streamWriter.writeStartElement(QNameUtils.getPrefix(name), name.getLocalPart(), name.getNamespaceURI()); String defaultNamespaceUri = namespaceContext.getNamespaceURI(""); if (StringUtils.hasLength(defaultNamespaceUri)) { streamWriter.writeNamespace("", defaultNamespaceUri); streamWriter.setDefaultNamespace(defaultNamespaceUri); } for (Iterator<String> iterator = namespaceContext.getBoundPrefixes(); iterator.hasNext();) { String prefix = iterator.next(); streamWriter.writeNamespace(prefix, namespaceContext.getNamespaceURI(prefix)); streamWriter.setPrefix(prefix, namespaceContext.getNamespaceURI(prefix)); } for (int i = 0; i < attributes.getLength(); i++) { QName attrName = QNameUtils.toQName(attributes.getURI(i), attributes.getQName(i)); String attrPrefix = QNameUtils.getPrefix(attrName); if (!("xmlns".equals(attrName.getLocalPart()) || "xmlns".equals(attrPrefix))) { streamWriter.writeAttribute(attrPrefix, attrName.getNamespaceURI(), attrName.getLocalPart(), attributes.getValue(i)); } } } }