List of usage examples for org.dom4j XPath selectNodes
List<Node> selectNodes(Object context, XPath sortXPath);
selectNodes
evaluates the XPath expression on the given Node or List of Node s and returns the result as a List
of Node
s sorted by the sort XPath expression. From source file:com.devoteam.srit.xmlloader.genscript.Param.java
License:Open Source License
public String applySubstitution(String text, Msg msg) throws Exception { String msgAvecParametres = ""; if (getRegle() != null) { String[] regexTab = getRegle().split("#"); // Si la regle est sous forme d'expression rgulire if (regexTab[0].toUpperCase().contains("REGEX")) { GlobalLogger.instance().getApplicationLogger().debug(TextEvent.Topic.CORE, "Replace parameter " + getRegle() + " => " + name); String[] regexRule = Arrays.copyOfRange(regexTab, 1, regexTab.length); msgAvecParametres = regexRemplace(regexRule, 0, text); }//w w w. j av a 2 s . co m // Si la regle est sous forme de xpath else if (regexTab[0].toUpperCase().contains("XPATH")) { GlobalLogger.instance().getApplicationLogger().debug(TextEvent.Topic.CORE, "Replace parameter " + getRegle() + " => " + name); // Rcupration des paramtres String xpathRule = regexTab[1]; String attribut = regexTab[2]; attribut = attribut.replace("@", ""); // Cration de l'arbre DOM correspondant au message SAXReader reader = new SAXReader(); try { Document document = reader.read(new ByteArrayInputStream(text.getBytes("UTF-8"))); // Cration de l'objet XPATH ) selectionner XPath xpath = new DefaultXPath(xpathRule); // Rcupration des noeuds correspondants List<Node> nodes = xpath.selectNodes(document.getRootElement(), xpath); // Pour chaque noeuds modifier Element aRemplacer = null; for (Node n : nodes) { setRemplacedValue(n.getText()); if (n instanceof Element) { aRemplacer = (Element) n; } else { aRemplacer = n.getParent(); } String newValue = getName(); String oldValue = aRemplacer.attribute(attribut).getValue(); // On regarde si on est dans le cas de paramtres mixtes if (regexTab.length > 3) { if (regexTab[3].equals("REGEX")) { setRemplacedValue(null); String[] regexRule = Arrays.copyOfRange(regexTab, 4, regexTab.length); newValue = regexRemplace(regexRule, 0, oldValue); } } aRemplacer.setAttributeValue(attribut, newValue); } // Convertion en chane de caractre de l'arbre DOM du message msgAvecParametres = document.getRootElement().asXML(); } catch (Exception e) { } } // si la rgle est sous forme de pathkey else if (regexTab[0].toUpperCase().contains("PATHKEY")) { String valeurARemplacer = null; // On rcupre la valeur remplacer String pathKeyWord = regexTab[1]; if (msg != null) { Parameter valeurParamARemplacer = msg.getParameter(pathKeyWord); if (valeurParamARemplacer.length() > 0) { valeurARemplacer = valeurParamARemplacer.get(0).toString(); } // On remplace dans tout le message par le parametre if (valeurARemplacer != null) { msgAvecParametres = text.replace(valeurARemplacer, getName()); if (!msgAvecParametres.equals(text)) { GlobalLogger.instance().getApplicationLogger().debug(TextEvent.Topic.CORE, "Replace parameter " + valeurARemplacer + " => " + name); setRemplacedValue(valeurARemplacer); } } } } } // Si le message n'a pas subit de modification, on retourne null if (!isUsed()) { return null; } // Sinon on retourne le message modifi avec les paramtres return msgAvecParametres; }
From source file:org.openxml4j.opc.signature.RelationshipTransform.java
License:Apache License
@SuppressWarnings("unchecked") public static void SortRelationshipElementsById(Document doc) { HashMap map = new HashMap(); map.put("rel", PackageNamespaces.RELATIONSHIPS); XPath xpath = DocumentHelper.createXPath("//rel:" + PackageRelationship.RELATIONSHIP_TAG_NAME); xpath.setNamespaceURIs(map);/*ww w . j a v a 2 s.com*/ XPath sortXpath = DocumentHelper.createXPath("@Id"); List<Element> sortedElements = xpath.selectNodes(doc, sortXpath); doc.getRootElement().setContent(sortedElements); }