List of usage examples for org.dom4j.tree DefaultText DefaultText
public DefaultText(String text)
From source file:com.cladonia.xml.xdiff.XDiffTreeDialog.java
License:Open Source License
private void addNewTextNode(Text text, String updateText, boolean merging) { int position = 0; // get child position XElement parent = (XElement) text.getParent(); Vector children = parent.getChildren(); int childPosition = 0; int childPositonCounter = 0; for (int i = 0; i < children.size(); i++) { Node node = (Node) children.get(i); if (node instanceof Text) { Text textFound = (Text) node; if (textFound == text) { childPosition = childPositonCounter; }//from ww w .ja va 2 s .co m childPositonCounter++; } else { // to allow for PIs etc childPositonCounter++; } } // get the next element or text node down, and find it's equivalent in the mergetree XElement mergeNextElement = null; Text mergeNextTextNode = null; for (int i = childPosition + 1; i < children.size(); i++) { Node node = (Node) children.get(i); if (node instanceof Element) { XElement nextEle = (XElement) node; // test for added or deleted elements XmlElementNode nextTreeNode = tree.getNode(nextEle, false); if (nextTreeNode.insertElement) { mergeNextElement = findInsertNode(nextEle); if (mergeNextElement != null) break; } else if (nextTreeNode.deleteElement) { mergeNextElement = findDeleteNode(nextEle); if (mergeNextElement != null) break; } else { String xpath = nextEle.getUniquePath(); Vector namespaceMappings = diffDocument.getDeclaredNamespaces(); Vector xpathResults = mergeDocument.search(xpath, namespaceMappings); if (xpathResults.size() > 0) { // found the equivalent next element in the merge doucmnet mergeNextElement = (XElement) xpathResults.get(0); break; } } } else if (node instanceof Text) { Text textNext = (Text) node; String uniquePath = text.getUniquePath(); int textNodePos = findTextPosition(textNext, (XElement) text.getParent()); Vector namespaceMappings = diffDocument.getDeclaredNamespaces(); StringBuffer xpath = new StringBuffer(uniquePath); xpath.append("["); xpath.append(textNodePos); xpath.append("]"); Vector xpathResults = mergeDocument.search(xpath.toString(), namespaceMappings); if (xpathResults.size() > 0) { Text foundText = (Text) xpathResults.get(0); if (textNext.getText().equals(foundText.getText())) ; { // found the equivalent text node in the merge doucmnet mergeNextTextNode = foundText; break; } } } } // find the child position of this if (mergeNextElement == null && mergeNextTextNode == null) { // couldn't find equivalent, so add it to the end position = -1; } else { if (mergeNextElement != null) { // find the position of this equivalent element XElement mergeNextParent = mergeNextElement.parent(); List mergeNextParentChildren = mergeNextParent.getChildren(); for (int i = 0; i < mergeNextParentChildren.size(); i++) { Node mergenode = (Node) mergeNextParentChildren.get(i); if (mergenode == mergeNextElement) { position = i; } } } else if (mergeNextTextNode != null) { // find the position of this equivalent text node XElement mergeNextParent = (XElement) mergeNextTextNode.getParent(); List mergeNextParentChildren = mergeNextParent.getChildren(); for (int i = 0; i < mergeNextParentChildren.size(); i++) { Node mergeChild = (Node) mergeNextParentChildren.get(i); if (mergeChild == mergeNextTextNode) { position = i; } } } } // position should now be where we want to add the element // need to add element and all it's children to mergeTree, so deep clone the element DefaultText newText = new DefaultText(updateText); // get the equivalent parent on the mergeTree String xpath = parent.getUniquePath(); Vector namespaceMappings = diffDocument.getDeclaredNamespaces(); Vector xpathResults = mergeDocument.search(xpath, namespaceMappings); if (xpathResults.size() > 0) { // get the equivalent element XElement mergeParentElement = (XElement) xpathResults.get(0); // get it's tree node XmlElementNode mergeTreeParentNode = mergeTree.getNode(mergeParentElement, false); // create the new tree node XmlTextNode newTreeNode = new XmlTextNode(newText, mergeTreeParentNode); newTreeNode.setMerged(merging); newTreeNode.updateTextNode(); List mergeParentChildren = mergeParentElement.content(); if (mergeParentChildren.size() == 0) { // no children, so just add it anywhere mergeParentElement.add(newText); // reset parent in case the node looks like <a/> if (mergeTreeParentNode.getChildCount() < 1) { XmlElementNode endNode = new XmlElementNode(mergeTreeParentNode.getElement(), true, mergeTreeParentNode); if (mergeTreeParentNode.getMerged()) { endNode.setMerged(true); endNode.update(); } mergeTree.insertNode(endNode, mergeTreeParentNode, mergeTreeParentNode.getChildCount()); mergeTreeParentNode.setElement(mergeParentElement); mergeTreeParentNode.update(); mergeTree.nodeChanged(mergeTreeParentNode); } mergeTree.insertNode(newTreeNode, mergeTreeParentNode, 0); // highlight it calledFromOtherTree = 1; mergeTree.clearSelection(); mergeTree.setSelectedNode(newTreeNode); calledFromOtherTree = 0; } else { if (position >= mergeParentChildren.size() || position == -1) { // it should be added to the end of all the children mergeParentChildren.add(newText); mergeTree.insertNode(newTreeNode, mergeTreeParentNode, mergeParentChildren.size() - 1); // highlight it calledFromOtherTree = 1; mergeTree.clearSelection(); mergeTree.setSelectedNode(newTreeNode); calledFromOtherTree = 0; } else { // add it in the particular position mergeParentChildren.add(position, newText); mergeTree.insertNode(newTreeNode, mergeTreeParentNode, position); //highlight it calledFromOtherTree = 1; mergeTree.clearSelection(); mergeTree.setSelectedNode(newTreeNode); calledFromOtherTree = 0; } } } syncSelection(); }
From source file:com.cladonia.xml.xdiff.XmlElementNode.java
License:Open Source License
/** * Constructs the the XML element node./*from w w w .j a v a2 s.co m*/ * * @param element the XML element. */ public XmlElementNode(XElement element, boolean end, XmlElementNode parent) { this.element = element; this.parent = parent; isEndTag = end; format(); if (!isEndTag()) { List childNodes = element.content(); for (int i = 0; i < element.nodeCount(); i++) { Node node = element.node(i); if (node instanceof XElement) { add(new XmlElementNode((XElement) node, this)); } else if ((node instanceof Text) && isMixedElementAndContent(element) && !isWhiteSpace(node)) { if (i < element.nodeCount()) { Node nextNode = element.node(i + 1); if (nextNode instanceof ProcessingInstruction) { add(new XmlTextNode((Text) node, (ProcessingInstruction) nextNode, this)); } else { // can't be PI after it add(new XmlTextNode((Text) node, this)); } } // if (i<element.nodeCount()) // { // Node nextNode = element.node(i+1); // if (nextNode instanceof ProcessingInstruction) // { // add( new XmlTextNode((Text)node,(ProcessingInstruction)nextNode,this)); // } // else if (nextNode instanceof Text) // { // // append the node and check for the next one // String combined = node.asXML().trim()+" "+nextNode.asXML().trim(); // i++; // while (i<element.nodeCount()) // { // Node nextNextNode = element.node(i+1); // if (nextNextNode instanceof Text) // { // // combine // combined = combined+" "+nextNextNode.asXML().trim(); // i++; // } // else // break; // } // // if (i< element.nodeCount()) // { // Node nextNextNode = element.node(i+1); // if (nextNextNode instanceof ProcessingInstruction) // { // add( new XmlTextNode(combined,(ProcessingInstruction)nextNextNode,this)); // } // else // { // add( new XmlTextNode(combined,this,false)); // } // } // else // { // add( new XmlTextNode(combined,this,false)); // } // } // else // { // // can't be PI after it // add( new XmlTextNode((Text)node,this)); // } // } // else // { // // can't be PI after it // add( new XmlTextNode((Text)node,this)); // } } else if ((node instanceof ProcessingInstruction) && isMixedElementAndContent(element)) { String pi = node.asXML(); if (pi.startsWith(DELETE)) { // check for mixed delete which we treat as a change if (pi.indexOf("\"") != -1 && pi.lastIndexOf(MIXED_DELETE_PI_END) != -1) { String updateTextFrom = getUpdatePIValue(pi); DefaultText dummy = new DefaultText(""); childNodes.add(i + 1, dummy); add(new XmlTextNode(dummy, updateTextFrom, this, true)); } } } } List elements = element.elements(); // create an end node... if (elements != null && elements.size() > 0) { add(new XmlElementNode(element, true, this)); } } //format(); }
From source file:com.devoteam.srit.xmlloader.core.utils.XMLElementTextOnlyParser.java
License:Open Source License
public List<Element> replace(Element element, ParameterPool variables) throws Exception { List<Element> result = new LinkedList(); result.add(element.createCopy());// ww w. ja va2 s . com element = result.get(0); Iterator nodesIterator = element.nodeIterator(); HashMap<Node, Node> nodesToReplace = new HashMap<Node, Node>(); boolean alreadyNext = false; while (nodesIterator.hasNext()) { Node node = null; if (!alreadyNext) { node = (Node) nodesIterator.next(); } Node lastTextNode = null; String lastTextNodeText = ""; alreadyNext = false; // // We put all successive TEXT Nodes into one node ( there is some fragmentation i don't understand ) // while (null != node && node.getNodeType() == Node.TEXT_NODE) { alreadyNext = true; lastTextNode = (Text) node; lastTextNodeText += lastTextNode.getText(); // this node will be deleted later ... if not overwritten in this hashmap nodesToReplace.put(lastTextNode, null); if (nodesIterator.hasNext()) { node = (Node) nodesIterator.next(); } else { node = null; } } // // We process normally the CDATA Nodes // if (null != node && node.getNodeType() == Node.CDATA_SECTION_NODE) { lastTextNode = (Node) node; lastTextNodeText = lastTextNode.getText(); } // // We do nothing for the other type Nodes // if (null == lastTextNode) { continue; } lastTextNode.setText(lastTextNodeText); // // Now that we have only one, complete, TEXT node or one CDATA node to proceed // Node textNode = (Node) lastTextNode; String text = textNode.getText(); String out = ""; int endOfLine; String line; // // Transform all \r\n, in \n // //text = Utils.replaceNoRegex(text, "\r", ""); while (text.length() > 0) { // // Read a line // endOfLine = text.indexOf("\n"); if (endOfLine == -1) { line = text; text = ""; } else { line = text.substring(0, endOfLine + 1); text = text.substring(endOfLine + 1); } // // Replace line if it contains at least a variable // if (Parameter.containsParameter(line)) { List<String> results = variables.parse(line); for (String s : results) { out += s; } } else { out += line; } } // // Set new text into new AVP // Text newTextNode = new DefaultText(out); nodesToReplace.put(textNode, newTextNode); } for (Node key : nodesToReplace.keySet()) { DefaultElementInterface.replaceNode((DefaultElement) element, key, nodesToReplace.get(key)); } if (result.size() != 1) { throw new ExecutionException("Size of result for XMLElementTextOnlyParser should be 1"); } return result; }
From source file:com.thoughtworks.cruise.utils.configfile.CruiseConfigDom.java
License:Apache License
public void updateLicense(String license, String user) { Element licenseElement = (Element) root().selectSingleNode("//license"); licenseElement.clearContent();/*from ww w . ja va2s . co m*/ licenseElement.add(new DefaultText(license)); licenseElement.addAttribute("user", user); }
From source file:net.sf.saxon.option.dom4j.DOM4JWriter.java
License:Mozilla Public License
private void flush() { if (textBuffer.length() != 0) { Text text = new DefaultText(textBuffer.toString()); ((Element) ancestors.peek()).add(text); textBuffer.setLength(0);/*from w w w.ja va 2s. c om*/ } }
From source file:org.nuxeo.adullact.importer.ImporterServiceImpl.java
License:Open Source License
protected Object resolveXP(Element el, String xpr) { @SuppressWarnings("unchecked") List<Object> nodes = el.selectNodes(xpr); if (nodes.size() == 1) { return nodes.get(0); } else if (nodes.size() > 1) { // Workaround for NXP-11834 if (xpr.endsWith("text()")) { String value = ""; for (Object node : nodes) { if (!(node instanceof DefaultText)) { String msg = "Text selector must return a string (expr:\"%s\") element %s"; log.error(String.format(msg, xpr, el.getStringValue())); return value; }//from w w w .j a v a 2 s . c om value += ((DefaultText) node).getText(); } return new DefaultText(value); } return nodes; } return null; }
From source file:org.nuxeo.ecm.platform.importer.xml.parser.XMLImporterServiceImpl.java
License:Open Source License
protected Object resolveXP(Element el, String xpr) { List<Object> nodes = el.selectNodes(xpr); if (nodes.size() == 1) { return nodes.get(0); } else if (nodes.size() > 1) { // Workaround for NXP-11834 if (xpr.endsWith("text()")) { String value = ""; for (Object node : nodes) { if (!(node instanceof DefaultText)) { String msg = "Text selector must return a string (expr:\"%s\") element %s"; log.error(String.format(msg, xpr, el.getStringValue())); return value; }/*from ww w. ja v a 2s .c om*/ value += ((DefaultText) node).getText(); } return new DefaultText(value); } return nodes; } return null; }
From source file:org.safehaus.penrose.config.PenroseConfigWriter.java
License:Open Source License
public Element createElement(PenroseConfig penroseConfig) { Element element = new DefaultElement("server"); for (String name : penroseConfig.getSystemPropertyNames()) { String value = penroseConfig.getSystemProperty(name); Element parameter = new DefaultElement("system-property"); Element paramName = new DefaultElement("property-name"); paramName.add(new DefaultText(name)); parameter.add(paramName);/* w w w . j a v a 2 s . c om*/ Element paramValue = new DefaultElement("property-value"); paramValue.add(new DefaultText(value)); parameter.add(paramValue); element.add(parameter); } /* for (SchemaConfig schemaConfig : penroseConfig.getSchemaConfigs()) { Element schema = new DefaultElement("schema"); if (schemaConfig.getName() != null) schema.addAttribute("name", schemaConfig.getName()); if (schemaConfig.getPath() != null) schema.addAttribute("path", schemaConfig.getPath()); element.add(schema); } */ for (InterpreterConfig interpreterConfig : penroseConfig.getInterpreterConfigs()) { element.add(createElement(interpreterConfig)); } if (penroseConfig.getSessionConfig() != null) { SessionConfig sessionConfig = penroseConfig.getSessionConfig(); element.add(toElement(sessionConfig)); } for (AdapterConfig adapterConfig : penroseConfig.getAdapterConfigs()) { element.add(createElement(adapterConfig)); } UserConfig rootUserConfig = penroseConfig.getRootUserConfig(); if (rootUserConfig != null) { Element rootElement = new DefaultElement("root"); if (rootUserConfig.getDn() != null) { Element rootDn = new DefaultElement("root-dn"); rootDn.add(new DefaultText(rootUserConfig.getDn().toString())); rootElement.add(rootDn); } if (rootUserConfig.getPassword() != null) { Element rootPassword = new DefaultElement("root-password"); rootPassword.add(new DefaultText(new String(rootUserConfig.getPassword()))); rootElement.add(rootPassword); } element.add(rootElement); } return element; }
From source file:org.safehaus.penrose.config.PenroseConfigWriter.java
License:Open Source License
public Element createElement(AdapterConfig adapterConfig) { Element element = new DefaultElement("adapter"); element.addAttribute("name", adapterConfig.getName()); Element adapterClass = new DefaultElement("adapter-class"); adapterClass.add(new DefaultText(adapterConfig.getAdapterClass())); element.add(adapterClass);/*from w w w. j av a2 s. co m*/ if (adapterConfig.getDescription() != null && !"".equals(adapterConfig.getDescription())) { Element description = new DefaultElement("description"); description.add(new DefaultText(adapterConfig.getDescription())); element.add(description); } for (String name : adapterConfig.getParameterNames()) { String value = adapterConfig.getParameter(name); Element parameter = new DefaultElement("parameter"); Element paramName = new DefaultElement("param-name"); paramName.add(new DefaultText(name)); parameter.add(paramName); Element paramValue = new DefaultElement("param-value"); paramValue.add(new DefaultText(value)); parameter.add(paramValue); element.add(parameter); } return element; }
From source file:org.safehaus.penrose.config.PenroseConfigWriter.java
License:Open Source License
public Element createElement(InterpreterConfig interpreterConfig) { Element element = new DefaultElement("interpreter"); /*/*from w w w . j a va 2 s.co m*/ Element interpreterName = new DefaultElement("interpreter-name"); interpreterName.add(new DefaultText(interpreterConfig.getName())); element.add(interpreterName); */ Element interpreterClass = new DefaultElement("interpreter-class"); interpreterClass.add(new DefaultText(interpreterConfig.getInterpreterClass())); element.add(interpreterClass); if (interpreterConfig.getDescription() != null && !"".equals(interpreterConfig.getDescription())) { Element description = new DefaultElement("description"); description.add(new DefaultText(interpreterConfig.getDescription())); element.add(description); } for (String name : interpreterConfig.getParameterNames()) { String value = interpreterConfig.getParameter(name); Element parameter = new DefaultElement("parameter"); Element paramName = new DefaultElement("param-name"); paramName.add(new DefaultText(name)); parameter.add(paramName); Element paramValue = new DefaultElement("param-value"); paramValue.add(new DefaultText(value)); parameter.add(paramValue); element.add(parameter); } return element; }