List of usage examples for org.dom4j Document setRootElement
void setRootElement(Element rootElement);
From source file:org.olat.core.gui.control.generic.textmarker.TextMarkerManagerImpl.java
License:Apache License
/** * @see org.olat.core.gui.control.generic.textmarker.TextMarkerManager#saveToFile(org.olat.core.util.vfs.VFSLeaf, java.util.List) *///www . j a v a2s . c o m @Override public void saveToFile(VFSLeaf textMarkerFile, List textMarkerList) { DocumentFactory df = DocumentFactory.getInstance(); Document doc = df.createDocument(); // create root element with version information Element root = df.createElement(XML_ROOT_ELEMENT); root.addAttribute(XML_VERSION_ATTRIBUTE, String.valueOf(VERSION)); doc.setRootElement(root); // add TextMarker elements Iterator iter = textMarkerList.iterator(); while (iter.hasNext()) { TextMarker textMarker = (TextMarker) iter.next(); textMarker.addToElement(root); } OutputStream stream = textMarkerFile.getOutputStream(false); try { XMLWriter writer = new XMLWriter(stream); writer.write(doc); writer.close(); stream.close(); } catch (UnsupportedEncodingException e) { Tracing.logError("Error while saving text marker file", e, TextMarkerManagerImpl.class); } catch (IOException e) { Tracing.logError("Error while saving text marker file", e, TextMarkerManagerImpl.class); } }
From source file:org.olat.ims.qti.qpool.QTIImportProcessor.java
License:Apache License
protected void processAssessmentFiles(QuestionItemImpl item, ItemInfos itemInfos) { //a package with an item String dir = item.getDirectory(); String rootFilename = item.getRootFilename(); VFSContainer container = qpoolFileStorage.getContainer(dir); VFSLeaf endFile = container.createChildLeaf(rootFilename); //embed in <questestinterop> DocumentFactory df = DocumentFactory.getInstance(); Document itemDoc = df.createDocument(); Element questestinteropEl = df.createElement(QTIDocument.DOCUMENT_ROOT); itemDoc.setRootElement(questestinteropEl); Element deepClone = (Element) itemInfos.getItemEl().clone(); questestinteropEl.add(deepClone);//from w ww .j av a 2s . c om //write try { OutputStream os = endFile.getOutputStream(false); ; XMLWriter xw = new XMLWriter(os, new OutputFormat(" ", true)); xw.write(itemDoc.getRootElement()); xw.close(); os.close(); } catch (IOException e) { log.error("", e); } //there perhaps some other materials if (importedFilename.toLowerCase().endsWith(".zip")) { processAssessmentMaterials(deepClone, container); } }
From source file:org.olat.ims.qti.render.ResultsBuilder.java
License:Apache License
/** * Method getResDoc./*from w w w. jav a 2s. co m*/ * * @param ai The assessment instance * @param locale The users locale * @param identity * @return Document The XML document */ public Document getResDoc(final AssessmentInstance ai, final Locale locale, final Identity identity) { final AssessmentContext ac = ai.getAssessmentContext(); final DocumentFactory df = DocumentFactory.getInstance(); final Document res_doc = df.createDocument(); final Element root = df.createElement("qti_result_report"); res_doc.setRootElement(root); final Element result = root.addElement("result"); final Element extension_result = result.addElement("extension_result"); // add items (not qti standard, but nice to display original questions -> // put it into extensions) // extension_result. final int sectioncnt = ac.getSectionContextCount(); for (int i = 0; i < sectioncnt; i++) { final SectionContext sc = ac.getSectionContext(i); final int itemcnt = sc.getItemContextCount(); for (int j = 0; j < itemcnt; j++) { final ItemContext it = sc.getItemContext(j); final Element el_item = it.getEl_item(); extension_result.add(el_item); } } // add ims cp id for any media references addStaticsPath(extension_result, ai); // add assessment_result // Add User information final Element context = result.addElement("context"); final User user = identity.getUser(); final String name = user.getProperty(UserConstants.LASTNAME, locale) + " " + user.getProperty(UserConstants.FIRSTNAME, locale) + " (" + identity.getName() + ")"; String instId = user.getProperty(UserConstants.INSTITUTIONALUSERIDENTIFIER, locale); final String instName = user.getProperty(UserConstants.INSTITUTIONALNAME, locale); if (instId == null) { instId = "N/A"; } context.addElement("name").addText(name); String institution; if (instName == null) { institution = "N/A"; } else { institution = instName; } if (institution == null) { institution = "N/A"; } // Add institutional identifier (e.g. Matrikelnummer) final Element generic_identifier = context.addElement("generic_identifier"); generic_identifier.addElement("type_label").addText(institution); generic_identifier.addElement("identifier_string").addText(instId); // Add start and stop date formatted as datetime final Element beginDate = context.addElement("date"); beginDate.addElement("type_label").addText("Start"); beginDate.addElement("datetime").addText(Formatter.formatDatetime(new Date(ac.getTimeOfStart()))); final Element stopDate = context.addElement("date"); stopDate.addElement("type_label").addText("Stop"); stopDate.addElement("datetime").addText(Formatter.formatDatetime(new Date(ac.getTimeOfStop()))); final Element ares = result.addElement("assessment_result"); ares.addAttribute("ident_ref", ac.getIdent()); if (ac.getTitle() != null) { ares.addAttribute("asi_title", ac.getTitle()); } // process assessment score final Element a_score = ares.addElement("outcomes").addElement("score"); a_score.addAttribute("varname", "SCORE"); String strVal = StringHelper.formatFloat(ac.getScore(), 2); a_score.addElement("score_value").addText(strVal); strVal = ac.getMaxScore() == -1.0f ? "N/A" : StringHelper.formatFloat(ac.getMaxScore(), 2); a_score.addElement("score_max").addText(strVal); strVal = ac.getCutvalue() == -1.0f ? "N/A" : StringHelper.formatFloat(ac.getCutvalue(), 2); a_score.addElement("score_cut").addText(strVal); addElementText(ares, "duration", QTIHelper.getISODuration(ac.getDuration())); addElementText(ares, "num_sections", "" + ac.getSectionContextCount()); addElementText(ares, "num_sections_presented", "0"); addElementText(ares, "num_items", "" + ac.getItemContextCount()); addElementText(ares, "num_items_presented", "" + ac.getItemsPresentedCount()); addElementText(ares, "num_items_attempted", "" + ac.getItemsAttemptedCount()); // add section_result final int secnt = ac.getSectionContextCount(); for (int i = 0; i < secnt; i++) { final SectionContext secc = ac.getSectionContext(i); final Element secres = ares.addElement("section_result"); secres.addAttribute("ident_ref", secc.getIdent()); if (secc.getTitle() != null) { secres.addAttribute("asi_title", secc.getTitle()); } addElementText(secres, "duration", QTIHelper.getISODuration(secc.getDuration())); addElementText(secres, "num_items", "" + secc.getItemContextCount()); addElementText(secres, "num_items_presented", "" + secc.getItemsPresentedCount()); addElementText(secres, "num_items_attempted", "" + secc.getItemsAttemptedCount()); // process section score final Element sec_score = secres.addElement("outcomes").addElement("score"); sec_score.addAttribute("varname", "SCORE"); strVal = secc.getScore() == -1.0f ? "N/A" : "" + StringHelper.formatFloat(secc.getScore(), 2); sec_score.addElement("score_value").addText(strVal); strVal = secc.getMaxScore() == -1.0f ? "N/A" : "" + StringHelper.formatFloat(secc.getMaxScore(), 2); sec_score.addElement("score_max").addText(strVal); strVal = secc.getCutValue() == -1 ? "N/A" : "" + secc.getCutValue(); sec_score.addElement("score_cut").addText(strVal); // iterate over all items in this section context final List itemsc = secc.getSectionItemContexts(); for (final Iterator it_it = itemsc.iterator(); it_it.hasNext();) { final ItemContext itemc = (ItemContext) it_it.next(); final Element itres = secres.addElement("item_result"); itres.addAttribute("ident_ref", itemc.getIdent()); itres.addAttribute("asi_title", itemc.getEl_item().attributeValue("title")); final Element it_duration = itres.addElement("duration"); it_duration.addText(QTIHelper.getISODuration(itemc.getTimeSpent())); // process item score final DecimalVariable scoreVar = (DecimalVariable) (itemc.getVariables().getSCOREVariable()); final Element it_score = itres.addElement("outcomes").addElement("score"); it_score.addAttribute("varname", "SCORE"); it_score.addElement("score_value") .addText(StringHelper.formatFloat(scoreVar.getTruncatedValue(), 2)); strVal = scoreVar.hasMinValue() ? "" + scoreVar.getMinValue() : "0.0"; it_score.addElement("score_min").addText(strVal); strVal = scoreVar.hasMaxValue() ? "" + scoreVar.getMaxValue() : "N/A"; it_score.addElement("score_max").addText(strVal); strVal = scoreVar.hasCutValue() ? "" + scoreVar.getCutValue() : "N/A"; it_score.addElement("score_cut").addText(strVal); final Element el_item = itemc.getEl_item(); final Map res_responsehash = new HashMap(3); // iterate over all responses of this item final List resps = el_item.selectNodes( ".//response_lid|.//response_xy|.//response_str|.//response_num|.//response_grp"); for (final Iterator it_resp = resps.iterator(); it_resp.hasNext();) { final Element resp = (Element) it_resp.next(); final String ident = resp.attributeValue("ident"); final String rcardinality = resp.attributeValue("rcardinality"); final String rtiming = resp.attributeValue("rtiming"); // add new response final Element res_response = itres.addElement("response"); res_response.addAttribute("ident_ref", ident); res_responsehash.put(ident, res_response); // enable lookup of // @identref of <response> // (needed with <varequal> // elements // add new response_form // <response_lid ident="MR01" rcardinality="Multiple" rtiming="No"> final Element res_responseform = res_response.addElement("response_form"); res_responseform.addAttribute("cardinality", rcardinality); res_responseform.addAttribute("timing", rtiming); final String respName = resp.getName(); final String type = respName.substring(respName.indexOf("_") + 1); res_responseform.addAttribute("response_type", type); // add user answer final ItemInput itemInp = itemc.getItemInput(); final Translator trans = Util.createPackageTranslator(QTIModule.class, locale); if (itemInp == null) { // user did not answer this question at all res_response.addElement("response_value").addText(trans.translate("ResBuilder.NoAnswer")); } else { final List userAnswer = itemInp.getAsList(ident); if (userAnswer == null) { // user did not answer this question at // all res_response.addElement("response_value") .addText(trans.translate("ResBuilder.NoAnswer")); } else { // the user chose at least one option of an answer (did not // simply click send) for (final Iterator it_ans = userAnswer.iterator(); it_ans.hasNext();) { res_response.addElement("response_value").addText((String) it_ans.next()); } } } } /* * The simple element correct_response can only list correct elements, that is, no "or" or "and" elements may be in the conditionvar. Pragmatic solution: * if condition has ors or ands, then put whole conditionvar into <extension_response> (proprietary), and for easier cases (just "varequal" "not" * elements) use correct_response. */ final Map corr_answers = new HashMap(); // keys: respIdents, values: HashSet // of correct answers for this // respIdent final List respconds = el_item.selectNodes(".//respcondition"); for (final Iterator it_respc = respconds.iterator(); it_respc.hasNext();) { final Element el_respc = (Element) it_respc.next(); // check for add/set in setvar elements (check for single instance // only -> spec allows for multiple instances) final Element el_setvar = (Element) el_respc.selectSingleNode(".//setvar"); if (el_setvar == null) { continue; } if (el_setvar.attributeValue("action").equals("Add") || el_setvar.attributeValue("action").equals("Set")) { // This resrocessing gives points -> assume correct answer float numPoints = 0; try { numPoints = Float.parseFloat(el_setvar.getTextTrim()); } catch (final NumberFormatException nfe) { // } if (numPoints <= 0) { continue; } Element conditionvar = (Element) el_respc.selectSingleNode(".//conditionvar"); // there is an evaluation defined (a "resprocessing" element exists) // if (xpath(count(.//varequal) + count(.//not) = count(.//*)) is // true, then there are only "not" and "varequal" elements final XPath xCanHandle = DocumentHelper .createXPath("count(.//varequal) + count(.//not) = count(.//*)"); boolean canHandle = xCanHandle.matches(conditionvar); if (!canHandle) { // maybe we have <condvar> <and> <...>, try again final Element el_and = (Element) conditionvar.selectSingleNode("and"); if (el_and != null) { canHandle = xCanHandle.matches(el_and); if (canHandle) { // simultate the el_and to be the conditionvar conditionvar = el_and; } } else { // and finally, maybe we have an <or> element .. final Element el_or = (Element) conditionvar.selectSingleNode("or"); if (el_or != null) { canHandle = xCanHandle.matches(el_or); if (canHandle) { // simultate the el_and to be the conditionvar conditionvar = el_or; } } } } if (!canHandle) { // qti res 1.2.1 can't handle it final Element condcopy = conditionvar.createCopy(); itres.addElement("extension_item_result").add(condcopy); } else { /* * easy case: get all varequal directly under the conditionvar element and assume the "not" elements do not contain "not" elements again... * <!ELEMENT response (qti_comment? , response_form? , num_attempts? , response_value* , extension_response?)> <!ELEMENT response_form * (correct_response* , extension_responseform?)> <!ELEMENT correct_response (#PCDATA)> */ final List vareqs = conditionvar.selectNodes("./varequal"); for (final Iterator it_vareq = vareqs.iterator(); it_vareq.hasNext();) { /* * get the identifier of the response, so that we can attach the <correct_response> to the right <response> element quote: ims qti asi xml * binding :3.6.23.1 <varequal> Element: respident (required). The identifier of the corresponding <response_lid>, <response_xy>, etc. * element (this was assigned using its ident attribute). */ final Element vareq = (Element) it_vareq.next(); final String respIdent = vareq.attributeValue("respident"); Set respIdent_corr_answers = (Set) corr_answers.get(respIdent); if (respIdent_corr_answers == null) { respIdent_corr_answers = new HashSet(3); } respIdent_corr_answers.add(vareq.getText()); corr_answers.put(respIdent, respIdent_corr_answers); } // for varequal } // else varequal } // add/set setvar } // for resprocessing final Set resp_ids = corr_answers.keySet(); for (final Iterator idents = resp_ids.iterator(); idents.hasNext();) { final String respIdent = (String) idents.next(); final Set respIdent_corr_answers = (Set) corr_answers.get(respIdent); final Element res_response = (Element) res_responsehash.get(respIdent); final Element res_respform = res_response.element("response_form"); for (final Iterator iter = respIdent_corr_answers.iterator(); iter.hasNext();) { final String answer = (String) iter.next(); res_respform.addElement("correct_response").addText(answer); } } } // for response_xy } return res_doc; }
From source file:org.openadaptor.auxil.processor.map.AttributeMapProcessorTestCase.java
License:Open Source License
private Document buildXmlDocument(String root) { Document doc = DocumentHelper.createDocument(); Element rootElement = DocumentHelper.createElement(root); doc.setRootElement(rootElement); rootElement.add(createElement(KEY_ONE, VALUE_ONE)); rootElement.add(createElement(KEY_TWO, VALUE_TWO)); rootElement.add(createElement(KEY_ONE, "AnotherValue")); Element l1 = createElement(KEY_L_1, VAL_L_1); l1.add(createElement(KEY_L_2_1, VAL_L_2_1)); l1.add(createElement(KEY_L_2_2, VAL_L_2_2)); rootElement.add(l1);//from w w w . java2 s . c o m return doc; }
From source file:org.orbeon.oxf.processor.EmailProcessor.java
License:Open Source License
private void handlePart(PipelineContext pipelineContext, String dataInputSystemId, Part parentPart, Element partOrBodyElement) throws Exception { final String name = partOrBodyElement.attributeValue("name"); String contentTypeAttribute = partOrBodyElement.attributeValue("content-type"); final String contentType = NetUtils.getContentTypeMediaType(contentTypeAttribute); final String charset; {/*w ww . ja v a2 s . c om*/ final String c = NetUtils.getContentTypeCharset(contentTypeAttribute); charset = (c != null) ? c : DEFAULT_CHARACTER_ENCODING; } final String contentTypeWithCharset = contentType + "; charset=" + charset; final String src = partOrBodyElement.attributeValue("src"); // Either a String or a FileItem final Object content; if (src != null) { // Content of the part is not inline // Generate a FileItem from the source final SAXSource source = getSAXSource(EmailProcessor.this, pipelineContext, src, dataInputSystemId, contentType); content = handleStreamedPartContent(pipelineContext, source); } else { // Content of the part is inline // In the cases of text/html and XML, there must be exactly one root element final boolean needsRootElement = "text/html".equals(contentType);// || ProcessorUtils.isXMLContentType(contentType); if (needsRootElement && partOrBodyElement.elements().size() != 1) throw new ValidationException( "The <body> or <part> element must contain exactly one element for text/html", (LocationData) partOrBodyElement.getData()); // Create Document and convert it into a String final Element rootElement = (Element) (needsRootElement ? partOrBodyElement.elements().get(0) : partOrBodyElement); final Document partDocument = new NonLazyUserDataDocument(); partDocument.setRootElement((Element) rootElement.clone()); content = handleInlinePartContent(partDocument, contentType); } if (!XMLUtils.isTextOrJSONContentType(contentType)) { // This is binary content (including application/xml) if (content instanceof FileItem) { final FileItem fileItem = (FileItem) content; parentPart.setDataHandler(new DataHandler(new DataSource() { public String getContentType() { return contentType; } public InputStream getInputStream() throws IOException { return fileItem.getInputStream(); } public String getName() { return name; } public OutputStream getOutputStream() throws IOException { throw new IOException("Write operation not supported"); } })); } else { byte[] data = NetUtils.base64StringToByteArray((String) content); parentPart.setDataHandler(new DataHandler(new SimpleBinaryDataSource(name, contentType, data))); } } else { // This is text content (including text/xml) if (content instanceof FileItem) { // The text content was encoded when written to the FileItem final FileItem fileItem = (FileItem) content; parentPart.setDataHandler(new DataHandler(new DataSource() { public String getContentType() { // This always contains a charset return contentTypeWithCharset; } public InputStream getInputStream() throws IOException { // This is encoded with the appropriate charset (user-defined, or the default) return fileItem.getInputStream(); } public String getName() { return name; } public OutputStream getOutputStream() throws IOException { throw new IOException("Write operation not supported"); } })); } else { parentPart.setDataHandler( new DataHandler(new SimpleTextDataSource(name, contentTypeWithCharset, (String) content))); } } // Set content-disposition header String contentDisposition = partOrBodyElement.attributeValue("content-disposition"); if (contentDisposition != null) parentPart.setDisposition(contentDisposition); // Set content-id header String contentId = partOrBodyElement.attributeValue("content-id"); if (contentId != null) parentPart.setHeader("content-id", "<" + contentId + ">"); //part.setContentID(contentId); }
From source file:org.orbeon.oxf.transformer.xupdate.statement.Utils.java
License:Open Source License
/** * Evaluate a sequence a statements, and insert the result of the * evaluation the given parent node at the given position. *//* w w w. ja v a 2s . c om*/ public static void insert(LocationData locationData, Node parent, int position, Object toInsert) { List nodesToInsert = xpathObjectToDOM4JList(locationData, toInsert); if (parent instanceof Element) Collections.reverse(nodesToInsert); for (Iterator j = nodesToInsert.iterator(); j.hasNext();) { Object object = j.next(); Node node = object instanceof String || object instanceof Number ? Dom4jUtils.createText(object.toString()) : (Node) ((Node) object).clone(); if (parent instanceof Element) { Element element = (Element) parent; if (node instanceof Attribute) { element.attributes().add(node); } else { element.content().add(position, node); } } else if (parent instanceof Attribute) { Attribute attribute = (Attribute) parent; attribute.setValue(attribute.getValue() + node.getText()); } else if (parent instanceof Document) { // Update a document element final Document document = (Document) parent; if (node instanceof Element) { if (document.getRootElement() != null) throw new ValidationException("Document already has a root element", locationData); document.setRootElement((Element) node); } else if (node instanceof ProcessingInstruction) { document.add(node); } else { throw new ValidationException( "Only an element or processing instruction can be at the root of a document", locationData); } } else { throw new ValidationException("Cannot insert into a node of type '" + parent.getClass() + "'", locationData); } } }
From source file:org.orbeon.oxf.xforms.action.actions.XFormsInsertAction.java
License:Open Source License
private static List<Node> doInsert(Node insertionNode, List<Node> clonedNodes, XFormsInstance modifiedInstance, boolean doDispatch) { final List<Node> insertedNodes = new ArrayList<Node>(clonedNodes.size()); if (insertionNode instanceof Element) { // Insert inside an element final Element insertContextElement = (Element) insertionNode; int otherNodeIndex = 0; for (Node clonedNode : clonedNodes) { if (clonedNode != null) {// NOTE: we allow passing some null nodes so we check on null if (clonedNode instanceof Attribute) { // Add attribute to element // NOTE: In XML, attributes are unordered. dom4j handles them as a list so has order, but the // XForms spec shouldn't rely on attribute order. We could try to keep the order, but it is harder // as we have to deal with removing duplicate attributes and find a reasonable insertion strategy. final Attribute clonedAttribute = (Attribute) clonedNode; final Attribute existingAttribute = insertContextElement .attribute(clonedAttribute.getQName()); if (existingAttribute != null) insertContextElement.remove(existingAttribute); insertContextElement.add(clonedAttribute); if (existingAttribute != null) { // Dispatch xxforms-replace event if required and possible // NOTE: For now, still dispatch xforms-insert for backward compatibility. if (doDispatch && modifiedInstance != null) { final DocumentWrapper documentWrapper = (DocumentWrapper) modifiedInstance .documentInfo(); Dispatch.dispatchEvent(new XXFormsReplaceEvent(modifiedInstance, documentWrapper.wrap(existingAttribute), documentWrapper.wrap(clonedAttribute))); }/*w w w .j a va 2 s. c om*/ } insertedNodes.add(clonedAttribute); } else if (!(clonedNode instanceof Document)) { // Add other node to element Dom4jUtils.content(insertContextElement).add(otherNodeIndex++, clonedNode); insertedNodes.add(clonedNode); } else { // "If a cloned node cannot be placed at the target location due to a node type conflict, then the // insertion for that particular clone node is ignored." } } } return insertedNodes; } else if (insertionNode instanceof Document) { final Document insertContextDocument = (Document) insertionNode; // "If there is more than one cloned node to insert, only the first node that does not cause a conflict is // considered." for (Node clonedNode : clonedNodes) { // Only an element can be inserted at the root of an instance if (clonedNode instanceof Element) { final Element formerRootElement = insertContextDocument.getRootElement(); insertContextDocument.setRootElement((Element) clonedNode); // Dispatch xxforms-replace event if required and possible // NOTE: For now, still dispatch xforms-insert for backward compatibility. if (doDispatch && modifiedInstance != null) { final DocumentWrapper documentWrapper = (DocumentWrapper) modifiedInstance.documentInfo(); Dispatch.dispatchEvent( new XXFormsReplaceEvent(modifiedInstance, documentWrapper.wrap(formerRootElement), documentWrapper.wrap(insertContextDocument.getRootElement()))); } insertedNodes.add(clonedNode); return insertedNodes; } } // NOTE: The spec does not allow inserting comments and PIs at the root of an instance document at this // point. return insertedNodes; } else { throw new OXFException("Unsupported insertion node type: " + insertionNode.getClass().getName()); } }
From source file:org.orbeon.oxf.xforms.event.events.XFormsSubmitSerializeEvent.java
License:Open Source License
public SequenceIterator getAttribute(String name) { if ("submission-body".equals(name)) { if (submissionBodyElement == null) { // Create a document and root element final Document document = Dom4jUtils.createDocument(); submissionBodyElement = Dom4jUtils.createElement("submission-body"); document.setRootElement(submissionBodyElement); }/* w w w . j a v a 2 s. co m*/ // Return document element final Item item = containingDocument().getStaticState().documentWrapper().wrap(submissionBodyElement); return SingletonIterator.makeIterator(item); } else if (XXFORMS_BINDING_ATTRIBUTE.equals(name)) { // Return the node to which the submission is bound if any if (boundNode != null) return SingletonIterator.makeIterator(boundNode); else return EmptyIterator.getInstance(); } else if (XXFORMS_SERIALIZATION_ATTRIBUTE.equals(name)) { // Return the requested serialization return SingletonIterator.makeIterator(new StringValue(requestedSerialization)); } else { return super.getAttribute(name); } }
From source file:org.orbeon.oxf.xml.dom4j.Dom4jUtils.java
License:Open Source License
/** * Return a new document with all parent namespaces copied to the new root element, assuming they are not already * declared on the new root element.//from w w w . j a v a2s.com * * @param newRoot element which must become the new root element of the document * @param detach if true the element is detached, otherwise it is deep copied * @return new document */ public static Document createDocumentCopyParentNamespaces(final Element newRoot, boolean detach) { final Element parentElement = newRoot.getParent(); final Document document; { if (detach) { // Detach document = createDocument(); document.setRootElement((Element) newRoot.detach()); } else { // Copy document = createDocumentCopyElement(newRoot); } } copyMissingNamespaces(parentElement, document.getRootElement()); return document; }
From source file:org.pentaho.platform.engine.services.SoapHelper.java
License:Open Source License
public static Document createSoapDocument() { Document document = DocumentHelper.createDocument(); Element envelope = createSoapEnvelope(); document.setRootElement(envelope); envelope.add(createSoapBody());//from www .j a va 2 s.c o m return document; }