use of org.w3c.dom.DocumentFragment in project cxf by apache.
the class StaxUtils method createXMLStreamWriter.
public static XMLStreamWriter createXMLStreamWriter(Result r) {
if (r instanceof DOMResult) {
// use our own DOM writer to avoid issues with Sun's
// version that doesn't support getNamespaceContext
DOMResult dr = (DOMResult) r;
Node nd = dr.getNode();
if (nd instanceof Document) {
return new W3CDOMStreamWriter((Document) nd);
} else if (nd instanceof Element) {
return new W3CDOMStreamWriter((Element) nd);
} else if (nd instanceof DocumentFragment) {
return new W3CDOMStreamWriter((DocumentFragment) nd);
}
}
XMLOutputFactory factory = getXMLOutputFactory();
try {
return factory.createXMLStreamWriter(r);
} catch (XMLStreamException e) {
throw new RuntimeException("Cant' create XMLStreamWriter", e);
} finally {
returnXMLOutputFactory(factory);
}
}
use of org.w3c.dom.DocumentFragment in project cxf by apache.
the class StaxUtils method readDocElement.
public static Node readDocElement(Document doc, Node parent, XMLEvent ev, StreamToDOMContext context) throws XMLStreamException {
switch(ev.getEventType()) {
case XMLStreamConstants.START_ELEMENT:
{
context.incrementCount();
Element e;
StartElement startElem = ev.asStartElement();
QName name = startElem.getName();
if (!StringUtils.isEmpty(name.getPrefix())) {
e = doc.createElementNS(name.getNamespaceURI(), name.getPrefix() + ":" + name.getLocalPart());
} else {
e = doc.createElementNS(name.getNamespaceURI(), name.getLocalPart());
}
e = (Element) parent.appendChild(e);
if (context.isRecordLoc()) {
context.setRecordLoc(addLocation(doc, e, startElem.getLocation(), context.isRecordLoc()));
}
if (context.isRepairing() && !isDeclared(e, name.getNamespaceURI(), name.getPrefix())) {
declare(e, name.getNamespaceURI(), name.getPrefix());
}
context.pushToStack(parent);
if (context.isThreshold() && innerElementLevelThreshold != -1 && context.getStackSize() >= innerElementLevelThreshold) {
throw new DepthExceededStaxException("reach the innerElementLevelThreshold:" + innerElementLevelThreshold);
}
if (context.isThreshold() && innerElementCountThreshold != -1 && context.getCount() >= innerElementCountThreshold) {
throw new DepthExceededStaxException("reach the innerElementCountThreshold:" + innerElementCountThreshold);
}
parent = e;
break;
}
case XMLStreamConstants.END_ELEMENT:
if (context.isStackEmpty()) {
return parent;
}
parent = context.popFromStack();
if (parent instanceof Document || parent instanceof DocumentFragment) {
return parent;
}
break;
case XMLStreamConstants.NAMESPACE:
Namespace ns = (Namespace) ev;
declare((Element) parent, ns.getNamespaceURI(), ns.getPrefix());
break;
case XMLStreamConstants.ATTRIBUTE:
Attribute at = (Attribute) ev;
QName qname = at.getName();
String attName = qname.getLocalPart();
String attPrefix = qname.getPrefix();
if (attPrefix != null && attPrefix.length() > 0) {
attName = attPrefix + ":" + attName;
}
Attr attr = doc.createAttributeNS(qname.getNamespaceURI(), attName);
attr.setValue(at.getValue());
((Element) parent).setAttributeNode(attr);
break;
case XMLStreamConstants.CHARACTERS:
if (parent != null) {
Characters characters = ev.asCharacters();
context.setRecordLoc(addLocation(doc, parent.appendChild(doc.createTextNode(characters.getData())), characters.getLocation(), context.isRecordLoc()));
}
break;
case XMLStreamConstants.COMMENT:
if (parent != null) {
parent.appendChild(doc.createComment(((javax.xml.stream.events.Comment) ev).getText()));
}
break;
case XMLStreamConstants.CDATA:
Characters characters = ev.asCharacters();
context.setRecordLoc(addLocation(doc, parent.appendChild(doc.createCDATASection(characters.getData())), characters.getLocation(), context.isRecordLoc()));
break;
case XMLStreamConstants.PROCESSING_INSTRUCTION:
parent.appendChild(doc.createProcessingInstruction(((ProcessingInstruction) ev).getTarget(), ((ProcessingInstruction) ev).getData()));
break;
case XMLStreamConstants.ENTITY_REFERENCE:
javax.xml.stream.events.EntityReference er = (javax.xml.stream.events.EntityReference) ev;
parent.appendChild(doc.createEntityReference(er.getName()));
break;
default:
break;
}
return parent;
}
Aggregations