Construire un XPath absolue pour un noeud
Bonjour à tous,
Depuis hier, je suis confronté à un problème avec SAX.
Le principe suivant est de pouvoir associer à chaque noeud, un xpath absolue.
Je m'explique :
En entrée le fichier XML suivant :
<data>
<title> toto </title>
<desc>
<p> blabla </p>
<p> bloblo </p>
</desc>
<data>
En sortie je veux construire le xpath suivant pour le noeud contenant le mot "bloblo"
data[1]/desc[1]/p[2]
Voici mes quelques essais (du bidoullage... ):
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| public void startElement(String nameSpaceURI, String localName,
String rawName, Attributes attributs) throws SAXException {
switch (localName) {
case "DATA":
if (StringUtils.isBlank(path)) {
path = XPathUtils.getPathFromElement(rawName, path, parentPath,
cptBalade);
}
parentPath = path;
break;
case "TITLE":
path += XPathUtils.getPathFromElement(rawName, path, parentPath,
cptPres);
parentPath = path;
break;
case "DESC":
path += XPathUtils.getPathFromElement(rawName, path, parentPath,
cptTitle);
break;
case "P":
path = XPathUtils.getPathFromElement(rawName, path, parentPath,
cptP);
}
break;
default:
break;
}
} |
Classe XPathUtils
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class XPathUtils {
public static String getPathFromElement(String localName,
String xPathCurrent,String parentPath, int compteurIdenfier) {
if(compteurIdenfier == 0){
xPathCurrent = "/" + localName + "[" + compteurIdenfier + "]";
parentPath=xPathCurrent;
}
else if(compteurIdenfier > 0 ){
xPathCurrent = parentPath+ "/" + localName + "[" + compteurIdenfier + "]";
}
return xPathCurrent;
}
} |
Je vous remercie d'avance