2009-02-16 8 views
3

ce que je veux ...existe-t-il un moyen de combiner xpath et regexp pour extraire des parties d'une valeur de noeud?

En supposant que je suis en train d'obtenir à la valeur de « B »

<tree> 
<nodea> 
<nodeb> 
A=foo; 
B=bar; 
C=goo; 
</nodeb> 
</nodea> 
</tree> 

ce qui suit est la syntaxe magique qui aurait du sens ... Je suis à la recherche de quelque chose de comparable qui fonctionne réellement :)

string = "./nodea/nodeb/[ REGEX('B=(.*?);') ]/ $1" 

Y at-il quelque chose comme ça dans une bibliothèque java xpath?

Répondre

4

XPath 2.0 adds regular expressions. Quelque chose comme ceci devrait faire ce que vous voulez, je pense:

fn:replace(./nodea/nodeb, ".*B=(.*?);.*", "$1") 
+0

Je crois que vous avez raison! (bien que dans l'intérêt de quelqu'un trouvant cela et essayant de l'utiliser à l'avenir, veuillez éditer votre réponse et remplacer votre expression rationnelle par ceci ... ". *? B = (. *?);. *" sinon la chose avoir faim et saute tous les bits précieux :) –

+0

quelle bibliothèque devrais-je utiliser? il semble que la bibliothèque javax ne sait pas quoi faire avec une chaîne xpath qui commence par "fn: replace (" –

+0

On dirait qu'aucune version de Java n'est fournie avec XPath 2.0. :(Je crois que vous devrez utiliser Saxon. –

Questions connexes